From 99174e4e5fb4b7079da80b35a6dfd68f3fd56a1c Mon Sep 17 00:00:00 2001 From: lbavoil Date: Fri, 25 Mar 2016 13:01:54 +0100 Subject: GFSDK_HBAO+_distro_r3.0_cl20573789 --- src/API.cpp | 240 + src/AppState_DX11.cpp | 91 + src/AppState_DX11.h | 73 + src/AppState_GL.cpp | 104 + src/AppState_GL.h | 88 + src/BuildVersion.h | 51 + src/Common.h | 77 + src/Common_DX12.h | 253 + src/Common_GL.h | 1318 + src/ConstantBuffers.cpp | 189 + src/ConstantBuffers.h | 496 + src/GLSLProgram.h | 233 + src/InputDepthInfo.h | 178 + src/InputNormalInfo.h | 129 + src/InputViewport.h | 131 + src/MathUtil.h | 83 + src/MatrixView.h | 47 + src/OutputInfo.h | 170 + src/PerfMarkers.h | 88 + src/PipelineStateObjects_DX12.cpp | 621 + src/PipelineStateObjects_DX12.h | 601 + src/ProjectionMatrixInfo.cpp | 63 + src/ProjectionMatrixInfo.h | 72 + src/RandomTexture.cpp | 184 + src/RandomTexture.h | 90 + src/RenderOptions.h | 41 + src/RenderTargets_DX11.h | 324 + src/RenderTargets_DX12.h | 407 + src/RenderTargets_GL.h | 403 + src/Renderer_DX11.cpp | 766 + src/Renderer_DX11.h | 242 + src/Renderer_DX12.cpp | 749 + src/Renderer_DX12.h | 200 + src/Renderer_GL.cpp | 556 + src/Renderer_GL.h | 223 + src/Shaders_DX11.cpp | 42 + src/Shaders_DX11.h | 204 + src/Shaders_DX12.cpp | 38 + src/Shaders_DX12.h | 220 + src/Shaders_GL.cpp | 190 + src/Shaders_GL.h | 326 + src/States_DX11.cpp | 191 + src/States_DX11.h | 107 + src/States_DX12.cpp | 200 + src/States_DX12.h | 95 + src/States_GL.cpp | 97 + src/States_GL.h | 39 + src/TextureUtil.h | 135 + src/TimestampQueries.h | 340 + src/UserTexture.h | 257 + src/VAO_GL.h | 55 + src/Viewports.h | 42 + src/d3dx12.h | 1508 + src/shaders/compile_glsl.bat | 13 + src/shaders/compile_hlsl.bat | 3 + src/shaders/helper_fxc.bat | 14 + src/shaders/helper_hlsl_cc.bat | 20 + src/shaders/out/d3d11/BlurX_PS.cpp | 1674 + src/shaders/out/d3d11/BlurX_PS.h | 49 + src/shaders/out/d3d11/BlurY_PS.cpp | 1769 + src/shaders/out/d3d11/BlurY_PS.h | 49 + src/shaders/out/d3d11/CoarseAO_GS.cpp | 179 + src/shaders/out/d3d11/CoarseAO_GS.h | 27 + src/shaders/out/d3d11/CoarseAO_PS.cpp | 80529 ++++++++++++++++++++++ src/shaders/out/d3d11/CoarseAO_PS.h | 72 + src/shaders/out/d3d11/CopyDepth_PS.cpp | 232 + src/shaders/out/d3d11/CopyDepth_PS.h | 38 + src/shaders/out/d3d11/DebugAO_PS.cpp | 6717 ++ src/shaders/out/d3d11/DebugAO_PS.h | 38 + src/shaders/out/d3d11/DebugNormals_PS.cpp | 801 + src/shaders/out/d3d11/DebugNormals_PS.h | 39 + src/shaders/out/d3d11/DeinterleaveDepth_PS.cpp | 235 + src/shaders/out/d3d11/DeinterleaveDepth_PS.h | 27 + src/shaders/out/d3d11/FullScreenTriangle_VS.cpp | 129 + src/shaders/out/d3d11/FullScreenTriangle_VS.h | 27 + src/shaders/out/d3d11/LinearizeDepth_PS.cpp | 272 + src/shaders/out/d3d11/LinearizeDepth_PS.h | 38 + src/shaders/out/d3d11/ReconstructNormal_PS.cpp | 392 + src/shaders/out/d3d11/ReconstructNormal_PS.h | 27 + src/shaders/out/d3d11/ReinterleaveAO_PS.cpp | 303 + src/shaders/out/d3d11/ReinterleaveAO_PS.h | 38 + src/shaders/out/gl/BlurX_PS.cpp | 453 + src/shaders/out/gl/BlurX_PS.h | 49 + src/shaders/out/gl/BlurY_PS.cpp | 465 + src/shaders/out/gl/BlurY_PS.h | 49 + src/shaders/out/gl/CoarseAO_PS.cpp | 15519 +++++ src/shaders/out/gl/CoarseAO_PS.h | 72 + src/shaders/out/gl/CopyDepth_PS.cpp | 139 + src/shaders/out/gl/CopyDepth_PS.h | 38 + src/shaders/out/gl/DebugNormals_PS.cpp | 313 + src/shaders/out/gl/DebugNormals_PS.h | 39 + src/shaders/out/gl/DeinterleaveDepth_PS.cpp | 112 + src/shaders/out/gl/DeinterleaveDepth_PS.h | 27 + src/shaders/out/gl/LinearizeDepth_PS.cpp | 145 + src/shaders/out/gl/LinearizeDepth_PS.h | 38 + src/shaders/out/gl/ReconstructNormal_PS.cpp | 125 + src/shaders/out/gl/ReconstructNormal_PS.h | 27 + src/shaders/out/gl/ReinterleaveAO_PS.cpp | 128 + src/shaders/out/gl/ReinterleaveAO_PS.h | 38 + src/shaders/src/BlurX_PS.hlsl | 27 + src/shaders/src/BlurY_PS.hlsl | 29 + src/shaders/src/Blur_Common.hlsl | 206 + src/shaders/src/CoarseAO_GS.hlsl | 35 + src/shaders/src/CoarseAO_PS.hlsl | 217 + src/shaders/src/ConstantBuffers.hlsl | 131 + src/shaders/src/CopyDepth_PS.hlsl | 41 + src/shaders/src/DebugAO_PS.hlsl | 169 + src/shaders/src/DebugNormals_PS.hlsl | 42 + src/shaders/src/DeinterleaveDepth_PS.hlsl | 95 + src/shaders/src/FetchNormal_Common.hlsl | 60 + src/shaders/src/FullScreenTriangle_VS.hlsl | 43 + src/shaders/src/LinearizeDepth_PS.hlsl | 49 + src/shaders/src/ReconstructNormal_Common.hlsl | 95 + src/shaders/src/ReconstructNormal_PS.hlsl | 26 + src/shaders/src/ReinterleaveAO_PS.hlsl | 70 + src/shaders/src/SharedDefines.h | 37 + 116 files changed, 126566 insertions(+) create mode 100644 src/API.cpp create mode 100644 src/AppState_DX11.cpp create mode 100644 src/AppState_DX11.h create mode 100644 src/AppState_GL.cpp create mode 100644 src/AppState_GL.h create mode 100644 src/BuildVersion.h create mode 100644 src/Common.h create mode 100644 src/Common_DX12.h create mode 100644 src/Common_GL.h create mode 100644 src/ConstantBuffers.cpp create mode 100644 src/ConstantBuffers.h create mode 100644 src/GLSLProgram.h create mode 100644 src/InputDepthInfo.h create mode 100644 src/InputNormalInfo.h create mode 100644 src/InputViewport.h create mode 100644 src/MathUtil.h create mode 100644 src/MatrixView.h create mode 100644 src/OutputInfo.h create mode 100644 src/PerfMarkers.h create mode 100644 src/PipelineStateObjects_DX12.cpp create mode 100644 src/PipelineStateObjects_DX12.h create mode 100644 src/ProjectionMatrixInfo.cpp create mode 100644 src/ProjectionMatrixInfo.h create mode 100644 src/RandomTexture.cpp create mode 100644 src/RandomTexture.h create mode 100644 src/RenderOptions.h create mode 100644 src/RenderTargets_DX11.h create mode 100644 src/RenderTargets_DX12.h create mode 100644 src/RenderTargets_GL.h create mode 100644 src/Renderer_DX11.cpp create mode 100644 src/Renderer_DX11.h create mode 100644 src/Renderer_DX12.cpp create mode 100644 src/Renderer_DX12.h create mode 100644 src/Renderer_GL.cpp create mode 100644 src/Renderer_GL.h create mode 100644 src/Shaders_DX11.cpp create mode 100644 src/Shaders_DX11.h create mode 100644 src/Shaders_DX12.cpp create mode 100644 src/Shaders_DX12.h create mode 100644 src/Shaders_GL.cpp create mode 100644 src/Shaders_GL.h create mode 100644 src/States_DX11.cpp create mode 100644 src/States_DX11.h create mode 100644 src/States_DX12.cpp create mode 100644 src/States_DX12.h create mode 100644 src/States_GL.cpp create mode 100644 src/States_GL.h create mode 100644 src/TextureUtil.h create mode 100644 src/TimestampQueries.h create mode 100644 src/UserTexture.h create mode 100644 src/VAO_GL.h create mode 100644 src/Viewports.h create mode 100644 src/d3dx12.h create mode 100644 src/shaders/compile_glsl.bat create mode 100644 src/shaders/compile_hlsl.bat create mode 100644 src/shaders/helper_fxc.bat create mode 100644 src/shaders/helper_hlsl_cc.bat create mode 100644 src/shaders/out/d3d11/BlurX_PS.cpp create mode 100644 src/shaders/out/d3d11/BlurX_PS.h create mode 100644 src/shaders/out/d3d11/BlurY_PS.cpp create mode 100644 src/shaders/out/d3d11/BlurY_PS.h create mode 100644 src/shaders/out/d3d11/CoarseAO_GS.cpp create mode 100644 src/shaders/out/d3d11/CoarseAO_GS.h create mode 100644 src/shaders/out/d3d11/CoarseAO_PS.cpp create mode 100644 src/shaders/out/d3d11/CoarseAO_PS.h create mode 100644 src/shaders/out/d3d11/CopyDepth_PS.cpp create mode 100644 src/shaders/out/d3d11/CopyDepth_PS.h create mode 100644 src/shaders/out/d3d11/DebugAO_PS.cpp create mode 100644 src/shaders/out/d3d11/DebugAO_PS.h create mode 100644 src/shaders/out/d3d11/DebugNormals_PS.cpp create mode 100644 src/shaders/out/d3d11/DebugNormals_PS.h create mode 100644 src/shaders/out/d3d11/DeinterleaveDepth_PS.cpp create mode 100644 src/shaders/out/d3d11/DeinterleaveDepth_PS.h create mode 100644 src/shaders/out/d3d11/FullScreenTriangle_VS.cpp create mode 100644 src/shaders/out/d3d11/FullScreenTriangle_VS.h create mode 100644 src/shaders/out/d3d11/LinearizeDepth_PS.cpp create mode 100644 src/shaders/out/d3d11/LinearizeDepth_PS.h create mode 100644 src/shaders/out/d3d11/ReconstructNormal_PS.cpp create mode 100644 src/shaders/out/d3d11/ReconstructNormal_PS.h create mode 100644 src/shaders/out/d3d11/ReinterleaveAO_PS.cpp create mode 100644 src/shaders/out/d3d11/ReinterleaveAO_PS.h create mode 100644 src/shaders/out/gl/BlurX_PS.cpp create mode 100644 src/shaders/out/gl/BlurX_PS.h create mode 100644 src/shaders/out/gl/BlurY_PS.cpp create mode 100644 src/shaders/out/gl/BlurY_PS.h create mode 100644 src/shaders/out/gl/CoarseAO_PS.cpp create mode 100644 src/shaders/out/gl/CoarseAO_PS.h create mode 100644 src/shaders/out/gl/CopyDepth_PS.cpp create mode 100644 src/shaders/out/gl/CopyDepth_PS.h create mode 100644 src/shaders/out/gl/DebugNormals_PS.cpp create mode 100644 src/shaders/out/gl/DebugNormals_PS.h create mode 100644 src/shaders/out/gl/DeinterleaveDepth_PS.cpp create mode 100644 src/shaders/out/gl/DeinterleaveDepth_PS.h create mode 100644 src/shaders/out/gl/LinearizeDepth_PS.cpp create mode 100644 src/shaders/out/gl/LinearizeDepth_PS.h create mode 100644 src/shaders/out/gl/ReconstructNormal_PS.cpp create mode 100644 src/shaders/out/gl/ReconstructNormal_PS.h create mode 100644 src/shaders/out/gl/ReinterleaveAO_PS.cpp create mode 100644 src/shaders/out/gl/ReinterleaveAO_PS.h create mode 100644 src/shaders/src/BlurX_PS.hlsl create mode 100644 src/shaders/src/BlurY_PS.hlsl create mode 100644 src/shaders/src/Blur_Common.hlsl create mode 100644 src/shaders/src/CoarseAO_GS.hlsl create mode 100644 src/shaders/src/CoarseAO_PS.hlsl create mode 100644 src/shaders/src/ConstantBuffers.hlsl create mode 100644 src/shaders/src/CopyDepth_PS.hlsl create mode 100644 src/shaders/src/DebugAO_PS.hlsl create mode 100644 src/shaders/src/DebugNormals_PS.hlsl create mode 100644 src/shaders/src/DeinterleaveDepth_PS.hlsl create mode 100644 src/shaders/src/FetchNormal_Common.hlsl create mode 100644 src/shaders/src/FullScreenTriangle_VS.hlsl create mode 100644 src/shaders/src/LinearizeDepth_PS.hlsl create mode 100644 src/shaders/src/ReconstructNormal_Common.hlsl create mode 100644 src/shaders/src/ReconstructNormal_PS.hlsl create mode 100644 src/shaders/src/ReinterleaveAO_PS.hlsl create mode 100644 src/shaders/src/SharedDefines.h (limited to 'src') diff --git a/src/API.cpp b/src/API.cpp new file mode 100644 index 0000000..350472d --- /dev/null +++ b/src/API.cpp @@ -0,0 +1,240 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#if SUPPORT_D3D11 +#include "Renderer_DX11.h" +#endif + +#if SUPPORT_D3D12 +#include "Renderer_DX12.h" +#endif + +#if SUPPORT_GL +#include "Renderer_GL.h" +#endif + +//-------------------------------------------------------------------------------- +inline static +GFSDK_SSAO_CustomHeap InitNewDelete(const GFSDK_SSAO_CustomHeap* pCustomHeap) +{ + GFSDK_SSAO_CustomHeap NewDelete; + + if (pCustomHeap) + { + NewDelete = *pCustomHeap; + } + else + { + NewDelete.new_ = ::operator new; + NewDelete.delete_ = ::operator delete; + } + + return NewDelete; +} + +//-------------------------------------------------------------------------------- +inline static +void* AllocateAndZeroMemory(const GFSDK_SSAO_CustomHeap& NewDelete, std::size_t SizeInBytes) +{ + void *pStorage = NewDelete.new_(SizeInBytes); + if (!pStorage) + { + return NULL; + } + + memset(pStorage, 0, SizeInBytes); + + return pStorage; +} + +#if SUPPORT_D3D11 + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_DECL(GFSDK_SSAO_Status, GFSDK_SSAO_CreateContext_D3D11, + ID3D11Device* pD3DDevice, + GFSDK_SSAO_Context_D3D11** ppAOContext, + const GFSDK_SSAO_CustomHeap* pCustomHeap, + GFSDK_SSAO_Version HeaderVersion) +{ + if (!ppAOContext) + { + return GFSDK_SSAO_NULL_ARGUMENT; + } + + GFSDK_SSAO_CustomHeap NewDelete = InitNewDelete(pCustomHeap); + + void *pStorage = AllocateAndZeroMemory(NewDelete, sizeof(GFSDK::SSAO::D3D11::Renderer)); + if (!pStorage) + { + return GFSDK_SSAO_MEMORY_ALLOCATION_FAILED; + } + + GFSDK::SSAO::D3D11::Renderer* pAOContext = new(pStorage) GFSDK::SSAO::D3D11::Renderer(NewDelete); + + *ppAOContext = pAOContext; + + return pAOContext->Create(pD3DDevice, HeaderVersion); +} + +#endif + +#if SUPPORT_GL + +//-------------------------------------------------------------------------------- +inline static +bool CheckGLFunctionPointers(const GFSDK_SSAO_GLFunctions& GL) +{ + return ( + GL.glActiveTexture && + GL.glAttachShader && + GL.glBindBuffer && + GL.glBindBufferBase && + GL.glBindFramebuffer && + GL.glBindFragDataLocation && + GL.glBindTexture && + GL.glBindVertexArray && + GL.glBlendColor && + GL.glBlendEquationSeparate && + GL.glBlendFuncSeparate && + GL.glBufferData && + GL.glBufferSubData && + GL.glColorMaski && + GL.glCompileShader && + GL.glCreateShader && + GL.glCreateProgram && + GL.glDeleteBuffers && + GL.glDeleteFramebuffers && + GL.glDeleteProgram && + GL.glDeleteShader && + GL.glDeleteTextures && + GL.glDeleteVertexArrays && + GL.glDisable && + GL.glDrawBuffers && + GL.glEnable && + GL.glDrawArrays && + GL.glFramebufferTexture && + GL.glFramebufferTexture2D && + GL.glFramebufferTextureLayer && + GL.glGenBuffers && + GL.glGenFramebuffers && + GL.glGenTextures && + GL.glGenVertexArrays && + GL.glGetError && + GL.glGetBooleani_v && + GL.glGetFloatv && + GL.glGetIntegerv && + GL.glGetIntegeri_v && + GL.glGetProgramiv && + GL.glGetProgramInfoLog && + GL.glGetShaderiv && + GL.glGetShaderInfoLog && + GL.glGetString && + GL.glGetUniformBlockIndex && + GL.glGetUniformLocation && + GL.glGetTexLevelParameteriv && + GL.glIsEnabled && + GL.glIsEnabledi && + GL.glLinkProgram && + GL.glPolygonOffset && + GL.glShaderSource && + GL.glTexImage2D && + GL.glTexImage3D && + GL.glTexParameteri && + GL.glUniform1i && + GL.glUniformBlockBinding && + GL.glUseProgram && + GL.glViewport); +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_DECL(GFSDK_SSAO_Status, GFSDK_SSAO_CreateContext_GL, + GFSDK_SSAO_Context_GL** ppAOContext, + const GFSDK_SSAO_GLFunctions* pGLFunctions, + const GFSDK_SSAO_CustomHeap* pCustomHeap, + GFSDK_SSAO_Version HeaderVersion) +{ + if (!ppAOContext) + { + return GFSDK_SSAO_NULL_ARGUMENT; + } + + if (!pGLFunctions) + { + return GFSDK_SSAO_NULL_ARGUMENT; + } + + if (!CheckGLFunctionPointers(*pGLFunctions)) + { + return GFSDK_SSAO_GL_NULL_FUNCTION_POINTER; + } + + GFSDK_SSAO_CustomHeap NewDelete = InitNewDelete(pCustomHeap); + + void *pStorage = AllocateAndZeroMemory(NewDelete, sizeof(GFSDK::SSAO::GL::Renderer)); + if (!pStorage) + { + return GFSDK_SSAO_MEMORY_ALLOCATION_FAILED; + } + + GFSDK::SSAO::GL::Renderer* pAOContext = new(pStorage) GFSDK::SSAO::GL::Renderer(*pGLFunctions, NewDelete); + + *ppAOContext = pAOContext; + + return pAOContext->Create(HeaderVersion); +} + +#endif + +#if SUPPORT_D3D12 + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_DECL(GFSDK_SSAO_Status, GFSDK_SSAO_CreateContext_D3D12, + ID3D12Device* pD3DDevice, + GFSDK_SSAO_UINT NodeMask, + const GFSDK_SSAO_DescriptorHeaps_D3D12& DescriptorHeaps, + GFSDK_SSAO_Context_D3D12** ppAOContext, + const GFSDK_SSAO_CustomHeap* pCustomHeap, + GFSDK_SSAO_Version HeaderVersion) +{ + if (!ppAOContext) + { + return GFSDK_SSAO_NULL_ARGUMENT; + } + + GFSDK_SSAO_CustomHeap NewDelete = InitNewDelete(pCustomHeap); + + void *pStorage = AllocateAndZeroMemory(NewDelete, sizeof(GFSDK::SSAO::D3D12::Renderer)); + if (!pStorage) + { + return GFSDK_SSAO_MEMORY_ALLOCATION_FAILED; + } + + GFSDK::SSAO::D3D12::Renderer* pAOContext = new(pStorage) GFSDK::SSAO::D3D12::Renderer(NewDelete); + + *ppAOContext = pAOContext; + + return pAOContext->Create(pD3DDevice, NodeMask, DescriptorHeaps, HeaderVersion); +} + +#endif + +GFSDK_SSAO_DECL(GFSDK_SSAO_Status, GFSDK_SSAO_GetVersion, + GFSDK_SSAO_Version* pVersion) +{ + if (!pVersion) + { + return GFSDK_SSAO_NULL_ARGUMENT; + } + + GFSDK::SSAO::BuildVersion BuildVersion; + *pVersion = BuildVersion; + + return GFSDK_SSAO_OK; +} diff --git a/src/AppState_DX11.cpp b/src/AppState_DX11.cpp new file mode 100644 index 0000000..eb50007 --- /dev/null +++ b/src/AppState_DX11.cpp @@ -0,0 +1,91 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "AppState_DX11.h" + +#if SUPPORT_D3D11 + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::AppState::Save(ID3D11DeviceContext* pDeviceContext) +{ + pDeviceContext->IAGetPrimitiveTopology(&Topology); + pDeviceContext->IAGetInputLayout(&pInputLayout); + + UINT NumViewports = 1; + pDeviceContext->RSGetViewports(&NumViewports, &Viewport); + pDeviceContext->RSGetState(&pRasterizerState); + + pDeviceContext->VSGetShader(&pVS, NULL, NULL); + pDeviceContext->HSGetShader(&pHS, NULL, NULL); + pDeviceContext->DSGetShader(&pDS, NULL, NULL); + pDeviceContext->GSGetShader(&pGS, NULL, NULL); + pDeviceContext->PSGetShader(&pPS, NULL, NULL); + pDeviceContext->CSGetShader(&pCS, NULL, NULL); + + pDeviceContext->PSGetShaderResources(0, SIZEOF_ARRAY(pPSShaderResourceViews), pPSShaderResourceViews); + pDeviceContext->PSGetSamplers(0, SIZEOF_ARRAY(pPSSamplers), pPSSamplers); + pDeviceContext->GSGetConstantBuffers(0, SIZEOF_ARRAY(pGSConstantBuffers), pGSConstantBuffers); + pDeviceContext->PSGetConstantBuffers(0, SIZEOF_ARRAY(pPSConstantBuffers), pPSConstantBuffers); + + pDeviceContext->OMGetDepthStencilState(&pDepthStencilState, &StencilRef); + pDeviceContext->OMGetBlendState(&pBlendState, BlendFactor, &SampleMask); + pDeviceContext->OMGetRenderTargets(SIZEOF_ARRAY(pRenderTargetViews), pRenderTargetViews, &pDepthStencilView); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::AppState::Restore(ID3D11DeviceContext* pDeviceContext) +{ + pDeviceContext->IASetPrimitiveTopology(Topology); + pDeviceContext->IASetInputLayout(pInputLayout); + + pDeviceContext->RSSetViewports(1, &Viewport); + pDeviceContext->RSSetState(pRasterizerState); + + pDeviceContext->VSSetShader(pVS, NULL, 0); + pDeviceContext->HSSetShader(pHS, NULL, 0); + pDeviceContext->DSSetShader(pDS, NULL, 0); + pDeviceContext->GSSetShader(pGS, NULL, 0); + pDeviceContext->PSSetShader(pPS, NULL, 0); + pDeviceContext->CSSetShader(pCS, NULL, 0); + + pDeviceContext->PSSetShaderResources(0, SIZEOF_ARRAY(pPSShaderResourceViews), pPSShaderResourceViews); + pDeviceContext->PSSetSamplers(0, SIZEOF_ARRAY(pPSSamplers), pPSSamplers); + pDeviceContext->GSSetConstantBuffers(0, SIZEOF_ARRAY(pGSConstantBuffers), pGSConstantBuffers); + pDeviceContext->PSSetConstantBuffers(0, SIZEOF_ARRAY(pPSConstantBuffers), pPSConstantBuffers); + + pDeviceContext->OMSetDepthStencilState(pDepthStencilState, StencilRef); + pDeviceContext->OMSetBlendState(pBlendState, BlendFactor, SampleMask); + pDeviceContext->OMSetRenderTargets(SIZEOF_ARRAY(pRenderTargetViews), pRenderTargetViews, pDepthStencilView); + + SAFE_RELEASE(pInputLayout); + SAFE_RELEASE(pRasterizerState); + SAFE_RELEASE(pVS); + SAFE_RELEASE(pHS); + SAFE_RELEASE(pDS); + SAFE_RELEASE(pGS); + SAFE_RELEASE(pPS); + SAFE_RELEASE(pCS); + SAFE_RELEASE(pDepthStencilState); + SAFE_RELEASE(pBlendState); + SAFE_RELEASE(pDepthStencilView); + SAFE_RELEASE_ARRAY(pPSShaderResourceViews); + SAFE_RELEASE_ARRAY(pPSSamplers); + SAFE_RELEASE_ARRAY(pGSConstantBuffers); + SAFE_RELEASE_ARRAY(pPSConstantBuffers); + SAFE_RELEASE_ARRAY(pRenderTargetViews); +} + +void GFSDK::SSAO::D3D11::AppState::UnbindSRVs(ID3D11DeviceContext* pDeviceContext) +{ + ID3D11ShaderResourceView* pNullSRVs[NumPSShaderResourceViews] = { NULL }; + pDeviceContext->PSSetShaderResources(0, ARRAYSIZE(pNullSRVs), pNullSRVs); +} + +#endif // SUPPORT_D3D11 diff --git a/src/AppState_DX11.h b/src/AppState_DX11.h new file mode 100644 index 0000000..7de6e6f --- /dev/null +++ b/src/AppState_DX11.h @@ -0,0 +1,73 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#pragma once +#include "Common.h" + +namespace GFSDK +{ +namespace SSAO +{ +namespace D3D11 +{ + +#if SUPPORT_D3D11 + +//-------------------------------------------------------------------------------- +class AppState +{ +public: + AppState() + { + memset(this, 0, sizeof(*this)); + } + + void Save(ID3D11DeviceContext* pDeviceContext); + void Restore(ID3D11DeviceContext* pDeviceContext); + static void UnbindSRVs(ID3D11DeviceContext* pDeviceContext); + +private: + static const int NumPSShaderResourceViews = 4; + static const int NumPSSamplers = 2; + static const int NumGSConstantBuffers = 4; + static const int NumPSConstantBuffers = 4; + static const int NumRenderTargetViews = 8; + + D3D11_VIEWPORT Viewport; + D3D11_PRIMITIVE_TOPOLOGY Topology; + ID3D11InputLayout* pInputLayout; + ID3D11RasterizerState* pRasterizerState; + + ID3D11VertexShader* pVS; + ID3D11HullShader* pHS; + ID3D11DomainShader* pDS; + ID3D11GeometryShader* pGS; + ID3D11PixelShader* pPS; + ID3D11ComputeShader* pCS; + + ID3D11ShaderResourceView* pPSShaderResourceViews[NumPSShaderResourceViews]; + ID3D11SamplerState* pPSSamplers[NumPSSamplers]; + ID3D11Buffer* pGSConstantBuffers[NumGSConstantBuffers]; + ID3D11Buffer* pPSConstantBuffers[NumPSConstantBuffers]; + + ID3D11DepthStencilState* pDepthStencilState; + UINT StencilRef; + ID3D11BlendState* pBlendState; + FLOAT BlendFactor[4]; + UINT SampleMask; + ID3D11RenderTargetView* pRenderTargetViews[NumRenderTargetViews]; + ID3D11DepthStencilView* pDepthStencilView; +}; + +#endif // SUPPORT_D3D11 + +} // namespace D3D11 +} // namespace SSAO +} // namespace GFSDK diff --git a/src/AppState_GL.cpp b/src/AppState_GL.cpp new file mode 100644 index 0000000..85bf40f --- /dev/null +++ b/src/AppState_GL.cpp @@ -0,0 +1,104 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "AppState_GL.h" + +#if SUPPORT_GL + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GL::AppState::Save(const GFSDK_SSAO_GLFunctions& GL) +{ + ASSERT_GL_ERROR(GL); + + GL.glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &m_DrawFBO); + GL.glGetIntegerv(GL_VERTEX_ARRAY_BINDING, &m_VAO); + GL.glGetIntegerv(GL_UNIFORM_BUFFER_BINDING, &m_ContextUBO); + for (GLuint BindingPoint = 0; BindingPoint < SIZEOF_ARRAY(m_BindPointUBOs); ++BindingPoint) + { + GL.glGetIntegeri_v(GL_UNIFORM_BUFFER_BINDING, BindingPoint, &m_BindPointUBOs[BindingPoint]); + } + + GL.glGetIntegerv(GL_ACTIVE_TEXTURE, &m_ActiveTexture); + GL.glGetIntegerv(GL_TEXTURE_BINDING_2D, &m_TextureBinding2D); + GL.glGetIntegerv(GL_TEXTURE_BINDING_2D_ARRAY, &m_TextureBinding2DArray); + GL.glGetIntegerv(GL_CURRENT_PROGRAM, &m_Program); + GL.glGetIntegerv(GL_VIEWPORT, m_Viewport); + GL.glGetFloatv(GL_POLYGON_OFFSET_FACTOR, &m_PolygonOffsetFactor); + GL.glGetFloatv(GL_POLYGON_OFFSET_UNITS, &m_PolygonOffsetUnits); + + m_CullFace = GL.glIsEnabled(GL_CULL_FACE); + m_ScissorTest = GL.glIsEnabled(GL_SCISSOR_TEST); + m_Multisample = GL.glIsEnabled(GL_MULTISAMPLE); + m_DepthTest = GL.glIsEnabled(GL_DEPTH_TEST); + m_StencilTest = GL.glIsEnabled(GL_STENCIL_TEST); + +#if !USE_GLES + m_ColorLogicOp = GL.glIsEnabled(GL_COLOR_LOGIC_OP); +#endif + + m_SampleCoverage = GL.glIsEnabled(GL_SAMPLE_COVERAGE); + m_SampleAlphaToCoverage = GL.glIsEnabled(GL_SAMPLE_ALPHA_TO_COVERAGE); + m_Blend = GL.glIsEnabledi(GL_BLEND, 0); + + GL.glGetIntegerv(GL_BLEND_SRC_RGB, &m_BlendSrcRGB); + GL.glGetIntegerv(GL_BLEND_SRC_ALPHA, &m_BlendSrcAlpha); + GL.glGetIntegerv(GL_BLEND_DST_RGB, &m_BlendDstRGB); + GL.glGetIntegerv(GL_BLEND_DST_ALPHA, &m_BlendDstAlpha); + GL.glGetIntegerv(GL_BLEND_EQUATION_RGB, &m_BlendEquationRGB); + GL.glGetIntegerv(GL_BLEND_EQUATION_ALPHA, &m_BlendEquationAlpha); + GL.glGetFloatv(GL_BLEND_COLOR, m_BlendColor); + GL.glGetBooleani_v(GL_COLOR_WRITEMASK, 0, m_ColorWriteMask); + + ASSERT_GL_ERROR(GL); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GL::AppState::Restore(const GFSDK_SSAO_GLFunctions& GL) +{ + ASSERT_GL_ERROR(GL); + + GL.glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_DrawFBO); + GL.glBindVertexArray(m_VAO); + GL.glBindBuffer(GL_UNIFORM_BUFFER, m_ContextUBO); + for (GLuint BindingPoint = 0; BindingPoint < SIZEOF_ARRAY(m_BindPointUBOs); ++BindingPoint) + { + GL.glBindBufferBase(GL_UNIFORM_BUFFER, BindingPoint, m_BindPointUBOs[BindingPoint]); + } + + GL.glActiveTexture(m_ActiveTexture); + GL.glBindTexture(GL_TEXTURE_2D, m_TextureBinding2D); + GL.glBindTexture(GL_TEXTURE_2D_ARRAY, m_TextureBinding2DArray); + GL.glUseProgram(m_Program); + GL.glViewport(m_Viewport[0], m_Viewport[1], m_Viewport[2], m_Viewport[3]); + GL.glPolygonOffset(m_PolygonOffsetFactor, m_PolygonOffsetUnits); + + EnableState(GL, m_CullFace, GL_CULL_FACE); + EnableState(GL, m_ScissorTest, GL_SCISSOR_TEST); + EnableState(GL, m_Multisample, GL_MULTISAMPLE); + EnableState(GL, m_DepthTest, GL_DEPTH_TEST); + EnableState(GL, m_StencilTest, GL_STENCIL_TEST); + +#if !USE_GLES + EnableState(GL, m_ColorLogicOp, GL_COLOR_LOGIC_OP); +#endif + + EnableState(GL, m_SampleCoverage, GL_SAMPLE_COVERAGE); + EnableState(GL, m_SampleAlphaToCoverage, GL_SAMPLE_ALPHA_TO_COVERAGE); + EnableState(GL, m_Blend, GL_BLEND); + + GL.glBlendFuncSeparate(m_BlendSrcRGB, m_BlendDstRGB, m_BlendSrcAlpha, m_BlendDstAlpha); + GL.glBlendEquationSeparate(m_BlendEquationRGB, m_BlendEquationAlpha); + GL.glBlendColor(m_BlendColor[0], m_BlendColor[1], m_BlendColor[2], m_BlendColor[3]); + GL.glColorMaski(0, m_ColorWriteMask[0], m_ColorWriteMask[1], m_ColorWriteMask[2], m_ColorWriteMask[3]); + + ASSERT_GL_ERROR(GL); +} + +#endif //SUPPORT_GL diff --git a/src/AppState_GL.h b/src/AppState_GL.h new file mode 100644 index 0000000..6ef03b2 --- /dev/null +++ b/src/AppState_GL.h @@ -0,0 +1,88 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#pragma once +#include "Common.h" + +namespace GFSDK +{ +namespace SSAO +{ +namespace GL +{ + +#if SUPPORT_GL + +//-------------------------------------------------------------------------------- +class AppState +{ +public: + AppState() + { + memset(this, 0, sizeof(*this)); + } + + void EnableState(const GFSDK_SSAO_GLFunctions& GL, GLboolean IsEnabled, GLenum Cap) + { + if (IsEnabled) + { + GL.glEnable(Cap); + } + else + { + GL.glDisable(Cap); + } + } + + void Save(const GFSDK_SSAO_GLFunctions& GL); + void Restore(const GFSDK_SSAO_GLFunctions& GL); + +private: + GLint m_DrawFBO; + GLint m_VAO; + + GLint m_ContextUBO; + GLint m_BindPointUBOs[3]; + + GLint m_ActiveTexture; + GLint m_TextureBinding2D; + GLint m_TextureBinding2DArray; + + GLint m_Program; + + GLint m_Viewport[4]; + GLfloat m_PolygonOffsetFactor; + GLfloat m_PolygonOffsetUnits; + + GLboolean m_CullFace; + GLboolean m_ScissorTest; + GLboolean m_Multisample; + GLboolean m_DepthTest; + GLboolean m_StencilTest; + GLboolean m_ColorLogicOp; + GLboolean m_SampleCoverage; + GLboolean m_SampleAlphaToCoverage; + + GLboolean m_Blend; + GLint m_BlendSrcRGB; + GLint m_BlendDstRGB; + GLint m_BlendSrcAlpha; + GLint m_BlendDstAlpha; + GLint m_BlendEquationRGB; + GLint m_BlendEquationAlpha; + GLfloat m_BlendColor[4]; + GLboolean m_ColorWriteMask[4]; +}; + +#endif // SUPPORT_GL + +} // namespace GL +} // namespace SSAO +} // namespace GFSDK diff --git a/src/BuildVersion.h b/src/BuildVersion.h new file mode 100644 index 0000000..2cdfb91 --- /dev/null +++ b/src/BuildVersion.h @@ -0,0 +1,51 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#pragma once + +#include "Common.h" + +#ifdef ANDROID +// Workaround for a compiler bug on Android +#define BUILD_VERSION_CHECK_MAJOR 0 +#define BUILD_VERSION_CHECK_MINOR 0 +#define BUILD_VERSION_CHECK_BRANCH 0 +#else +#define BUILD_VERSION_CHECK_MAJOR 1 +#define BUILD_VERSION_CHECK_MINOR 1 +#define BUILD_VERSION_CHECK_BRANCH 1 +#endif + +namespace GFSDK +{ +namespace SSAO +{ + +class BuildVersion : public GFSDK_SSAO_Version +{ +public: + bool Match(const GFSDK_SSAO_Version &V) + { + return +#if BUILD_VERSION_CHECK_MAJOR + V.Major == Major && +#endif +#if BUILD_VERSION_CHECK_MINOR + V.Minor == Minor && +#endif +#if BUILD_VERSION_CHECK_BRANCH + V.Branch == Branch && +#endif + V.Revision == Revision; + } +}; + +} // namespace SSAO +} // namespace GFSDK diff --git a/src/Common.h b/src/Common.h new file mode 100644 index 0000000..ac13b87 --- /dev/null +++ b/src/Common.h @@ -0,0 +1,77 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#pragma once + +#include "GFSDK_SSAO.h" +#include "shaders/src/SharedDefines.h" + +#include +#include +#include + +#if _WIN32 +#define snprintf sprintf_s +#endif + +#if _DEBUG +#define ASSERT(exp) assert(exp) +#define ASSERT_GL_ERROR(GL) assert(!GL.glGetError()) +#else +#define ASSERT(exp) ((void)0) +#define ASSERT_GL_ERROR(GL) +#endif + +#ifndef ANDROID +#define ENABLE_EXCEPTIONS 1 +#endif + +#if ENABLE_EXCEPTIONS +#define THROW_RUNTIME_ERROR() throw std::runtime_error("") +#else +#define THROW_RUNTIME_ERROR() ASSERT(0) +#endif + +#define THROW_IF(exp) { if (exp) THROW_RUNTIME_ERROR(); } +#define THROW_IF_FAILED(exp) { if (exp != S_OK) THROW_RUNTIME_ERROR(); } +#define SAFE_D3D_CALL(exp) { if (exp != S_OK) ASSERT(0); } + +#define SIZEOF_ARRAY(A) (sizeof(A) / sizeof(A[0])) +#define ZERO_ARRAY(A) memset(A, 0, sizeof(A)); +#define ZERO_STRUCT(S) memset(&S, 0, sizeof(S)); + +#define ALIGNED_SIZE(size, align) ((size + (align - 1)) & ~(align - 1)) + +#define SAFE_DELETE(p) { if (p) { delete (p); (p)=NULL; } } +#define SAFE_RELEASE(p) { if (p) { (p)->Release(); (p)=NULL; } } +#define SAFE_RELEASE_ARRAY(A) { for (UINT i = 0; i < SIZEOF_ARRAY(A); ++i) { SAFE_RELEASE(A[i]); } } + +#undef STRINGIFY +#define STRINGIFY(A) #A + +#undef STRINGIFY_MACRO +#define STRINGIFY_MACRO(s) STRINGIFY(s) + +typedef GFSDK_SSAO_UINT UINT; +typedef GFSDK_SSAO_FLOAT FLOAT; + +#if SUPPORT_D3D11 +#include +#endif + +#if SUPPORT_GL +#include "Common_GL.h" +#endif + +#if SUPPORT_D3D12 +#include "Common_DX12.h" +#endif + +#include "MathUtil.h" diff --git a/src/Common_DX12.h b/src/Common_DX12.h new file mode 100644 index 0000000..f4d7f34 --- /dev/null +++ b/src/Common_DX12.h @@ -0,0 +1,253 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#pragma once + +#if SUPPORT_D3D12 + +#include +#include +#include +#include +#include +#include +#include +#include "d3dx12.h" + +typedef D3D12_SHADER_BYTECODE GFSDK_D3D12_VertexShader; +typedef D3D12_SHADER_BYTECODE GFSDK_D3D12_GeometryShader; +typedef D3D12_SHADER_BYTECODE GFSDK_D3D12_PixelShader; + +//-------------------------------------------------------------------------------- +struct ShaderResourceView +{ + ShaderResourceView() + { + memset(this, 0, sizeof(*this)); + } + ShaderResourceView(GFSDK_SSAO_ShaderResourceView_D3D12 A) + : pResource(A.pResource) + , GpuHandle({ A.GpuHandle }) + { + } + ID3D12Resource* pResource; + D3D12_GPU_DESCRIPTOR_HANDLE GpuHandle; +}; + +struct RenderTargetView +{ + RenderTargetView() + { + memset(this, 0, sizeof(*this)); + } + RenderTargetView(GFSDK_SSAO_RenderTargetView_D3D12 A) + : pResource(A.pResource) + , CpuHandle({ A.CpuHandle }) + { + } + ID3D12Resource* pResource; + D3D12_CPU_DESCRIPTOR_HANDLE CpuHandle; +}; + +struct GFSDK_D3D12_DescriptorHeap +{ + D3D12_DESCRIPTOR_HEAP_DESC Desc; + ID3D12DescriptorHeap* pDescHeap; + D3D12_CPU_DESCRIPTOR_HANDLE hCPUHeap; + D3D12_GPU_DESCRIPTOR_HANDLE hGPUHeap; + UINT HandleIncrementSize; + UINT NumDescriptors; + UINT BaseIndex; + + void InitDescriptorHeap(ID3D12Device* pDevice, D3D12_DESCRIPTOR_HEAP_TYPE HeapType, const GFSDK_SSAO_DescriptorHeapRange_D3D12* pHeapInfo, bool bShaderVisible) + { + NumDescriptors = pHeapInfo->NumDescriptors; + pDescHeap = pHeapInfo->pDescHeap; + BaseIndex = pHeapInfo->BaseIndex; + + if (NumDescriptors > 0) + { + pDescHeap->AddRef(); + hCPUHeap = pDescHeap->GetCPUDescriptorHandleForHeapStart(); + if (bShaderVisible) + { + hGPUHeap = pDescHeap->GetGPUDescriptorHandleForHeapStart(); + } + HandleIncrementSize = pDevice->GetDescriptorHandleIncrementSize(HeapType); + } + else + { + pDescHeap = nullptr; + HandleIncrementSize = 0; + } + } + + void Release() + { + SAFE_RELEASE(pDescHeap); + } + + D3D12_CPU_DESCRIPTOR_HANDLE GetCPUHandle(UINT index) + { + ASSERT(index < NumDescriptors); + return{ hCPUHeap.ptr + (BaseIndex + index) * HandleIncrementSize }; + } + + D3D12_GPU_DESCRIPTOR_HANDLE GetGPUHandle(UINT index) + { + ASSERT(index < NumDescriptors); + return{ hGPUHeap.ptr + (BaseIndex + index) * HandleIncrementSize }; + } +}; + +enum CBVSRVUAVLayoutBase +{ + eGlobalCB = 0, + ePerPassCB, + ePerPassCBEnd = ePerPassCB + 16 - 1, + eFullResViewDepthTexture, + eFullResNormalTexture, + eQuarterResViewDepthTextureArray, + eQuarterResViewDepthTextureArrayEnd = eQuarterResViewDepthTextureArray + 16, + eQuarterResAOTextureArray, + eQuarterResAOTextureArrayEnd = eQuarterResAOTextureArray + 16, + eFullResAOZTexture, + eFullResAOZTexture2, + eCBVSRVUAVLayoutBaseMax +}; + +enum RTVLayoutBase +{ + eFullResViewDepthTextureRTV, + eFullResNormalTextureRTV, + eQuarterResViewDepthTextureArrayRTV, + eQuarterResAOTextureArrayRTV = eQuarterResViewDepthTextureArrayRTV + 1 + 16, + eFullResAOZTextureRTV = eQuarterResAOTextureArrayRTV + 1 + 16, + eFullResAOZTexture2RTV, + eRTVLayoutBaseMax +}; + +struct GFSDK_D3D12_DescriptorHeaps +{ + GFSDK_D3D12_DescriptorHeap CBVSRVUAV; + GFSDK_D3D12_DescriptorHeap RTV; + + void InitDescriptorHeaps(ID3D12Device* pDevice, const GFSDK_SSAO_DescriptorHeaps_D3D12& DescriptorHeaps) + { + CBVSRVUAV.InitDescriptorHeap(pDevice, D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV, &DescriptorHeaps.CBV_SRV_UAV, true); + RTV.InitDescriptorHeap(pDevice, D3D12_DESCRIPTOR_HEAP_TYPE_RTV, &DescriptorHeaps.RTV, false); + } + + D3D12_GPU_DESCRIPTOR_HANDLE GetGpuHandle(CBVSRVUAVLayoutBase BaseOffset, UINT Index) + { + return CBVSRVUAV.GetGPUHandle(BaseOffset + Index); + } + + void Release() + { + RTV.Release(); + CBVSRVUAV.Release(); + } +}; + +inline void GFSDK_D3D12_SetResourceBarrier(ID3D12GraphicsCommandList* commandList, + ID3D12Resource* res, + D3D12_RESOURCE_STATES before, + D3D12_RESOURCE_STATES after) +{ + D3D12_RESOURCE_BARRIER desc = {}; + desc.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION; + desc.Transition.pResource = res; + desc.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES; + desc.Transition.StateBefore = before; + desc.Transition.StateAfter = after; + desc.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE; + commandList->ResourceBarrier(1, &desc); +} + +struct GFSDK_D3D12_GraphicsContext +{ + ID3D12Device* pDevice; + GFSDK_D3D12_DescriptorHeaps DescHeaps; + ID3D12GraphicsCommandList* pCmdList; + ID3D12CommandQueue* pCmdQueue; + ID3D12Fence* pFence; + HANDLE hFenceEvent = 0; + UINT64 FenceValue; + UINT NodeMask; + + void Init(ID3D12Device* _pDevice, const GFSDK_SSAO_DescriptorHeaps_D3D12& DescriptorHeaps, UINT _NodeMask) + { + ASSERT(pDevice == NULL); + ASSERT(pCmdList == NULL); + ASSERT(pCmdQueue == NULL); + + pDevice = _pDevice; + pCmdList = NULL; + pCmdQueue = NULL; + NodeMask = _NodeMask; + + DescHeaps.InitDescriptorHeaps(pDevice, DescriptorHeaps); + + THROW_IF_FAILED(pDevice->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&pFence))); +#if _DEBUG + pFence->SetName(L"SSAOFence"); +#endif + hFenceEvent = CreateEventEx(nullptr, FALSE, FALSE, EVENT_ALL_ACCESS); + + FenceValue = 0; + } + + // This should be called when the library ends + void Release() + { + CloseHandle(hFenceEvent); + SAFE_RELEASE(pFence); + DescHeaps.Release(); + } + + void IncrFenceValue() + { + FenceValue++; + } + + void WaitGPUIdle() + { + // Schedule a Signal command in the queue. + THROW_IF_FAILED(pCmdQueue->Signal(pFence, FenceValue)); + + THROW_IF_FAILED(pFence->SetEventOnCompletion(FenceValue, hFenceEvent)); + + WaitForSingleObjectEx(hFenceEvent, INFINITE, FALSE); + } + + void AddResourceBarrier(ID3D12Resource* pResource, D3D12_RESOURCE_STATES OldState, D3D12_RESOURCE_STATES NewState) + { + if (OldState = NewState) + { + return; + } + D3D12_RESOURCE_BARRIER BarrierDesc = {}; + BarrierDesc.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION; + BarrierDesc.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE; + BarrierDesc.Transition.pResource = pResource; + BarrierDesc.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES; + BarrierDesc.Transition.StateBefore = OldState; + BarrierDesc.Transition.StateAfter = NewState; + pCmdList->ResourceBarrier(1, &BarrierDesc); + } +}; + +struct GFSDK_D3D12_RootParameter +{ + D3D12_ROOT_PARAMETER RootParam; +}; + +#endif // SUPPORT_D3D12 diff --git a/src/Common_GL.h b/src/Common_GL.h new file mode 100644 index 0000000..aced472 --- /dev/null +++ b/src/Common_GL.h @@ -0,0 +1,1318 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#pragma once +#if SUPPORT_GL + +// Turn this on to use GLES 3.0 instead of GL 3.2. +#define USE_GLES 0 + +#ifndef GL_VERSION_3_2 +#define GL_VERSION_3_2 + +#define GL_ZERO 0 +#define GL_FALSE 0 +#define GL_LOGIC_OP 0x0BF1 +#define GL_NONE 0 +#define GL_TEXTURE_COMPONENTS 0x1003 +#define GL_NO_ERROR 0 +#define GL_POINTS 0x0000 +#define GL_CURRENT_BIT 0x00000001 +#define GL_TRUE 1 +#define GL_ONE 1 +#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_POINT_BIT 0x00000002 +#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002 +#define GL_LINE_STRIP 0x0003 +#define GL_LINE_BIT 0x00000004 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_FAN 0x0006 +#define GL_QUADS 0x0007 +#define GL_QUAD_STRIP 0x0008 +#define GL_POLYGON_BIT 0x00000008 +#define GL_POLYGON 0x0009 +#define GL_POLYGON_STIPPLE_BIT 0x00000010 +#define GL_PIXEL_MODE_BIT 0x00000020 +#define GL_LIGHTING_BIT 0x00000040 +#define GL_FOG_BIT 0x00000080 +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_ACCUM 0x0100 +#define GL_LOAD 0x0101 +#define GL_RETURN 0x0102 +#define GL_MULT 0x0103 +#define GL_ADD 0x0104 +#define GL_NEVER 0x0200 +#define GL_ACCUM_BUFFER_BIT 0x00000200 +#define GL_LESS 0x0201 +#define GL_EQUAL 0x0202 +#define GL_LEQUAL 0x0203 +#define GL_GREATER 0x0204 +#define GL_NOTEQUAL 0x0205 +#define GL_GEQUAL 0x0206 +#define GL_ALWAYS 0x0207 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA_SATURATE 0x0308 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_FRONT_LEFT 0x0400 +#define GL_FRONT_RIGHT 0x0401 +#define GL_BACK_LEFT 0x0402 +#define GL_BACK_RIGHT 0x0403 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_LEFT 0x0406 +#define GL_RIGHT 0x0407 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_AUX0 0x0409 +#define GL_AUX1 0x040A +#define GL_AUX2 0x040B +#define GL_AUX3 0x040C +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVALID_OPERATION 0x0502 +#define GL_STACK_OVERFLOW 0x0503 +#define GL_STACK_UNDERFLOW 0x0504 +#define GL_OUT_OF_MEMORY 0x0505 +#define GL_2D 0x0600 +#define GL_3D 0x0601 +#define GL_3D_COLOR 0x0602 +#define GL_3D_COLOR_TEXTURE 0x0603 +#define GL_4D_COLOR_TEXTURE 0x0604 +#define GL_PASS_THROUGH_TOKEN 0x0700 +#define GL_POINT_TOKEN 0x0701 +#define GL_LINE_TOKEN 0x0702 +#define GL_POLYGON_TOKEN 0x0703 +#define GL_BITMAP_TOKEN 0x0704 +#define GL_DRAW_PIXEL_TOKEN 0x0705 +#define GL_COPY_PIXEL_TOKEN 0x0706 +#define GL_LINE_RESET_TOKEN 0x0707 +#define GL_EXP 0x0800 +#define GL_VIEWPORT_BIT 0x00000800 +#define GL_EXP2 0x0801 +#define GL_CW 0x0900 +#define GL_CCW 0x0901 +#define GL_COEFF 0x0A00 +#define GL_ORDER 0x0A01 +#define GL_DOMAIN 0x0A02 +#define GL_CURRENT_COLOR 0x0B00 +#define GL_CURRENT_INDEX 0x0B01 +#define GL_CURRENT_NORMAL 0x0B02 +#define GL_CURRENT_TEXTURE_COORDS 0x0B03 +#define GL_CURRENT_RASTER_COLOR 0x0B04 +#define GL_CURRENT_RASTER_INDEX 0x0B05 +#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 +#define GL_CURRENT_RASTER_POSITION 0x0B07 +#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08 +#define GL_CURRENT_RASTER_DISTANCE 0x0B09 +#define GL_POINT_SMOOTH 0x0B10 +#define GL_POINT_SIZE 0x0B11 +#define GL_POINT_SIZE_RANGE 0x0B12 +#define GL_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_LINE_SMOOTH 0x0B20 +#define GL_LINE_WIDTH 0x0B21 +#define GL_LINE_WIDTH_RANGE 0x0B22 +#define GL_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_LINE_STIPPLE 0x0B24 +#define GL_LINE_STIPPLE_PATTERN 0x0B25 +#define GL_LINE_STIPPLE_REPEAT 0x0B26 +#define GL_LIST_MODE 0x0B30 +#define GL_MAX_LIST_NESTING 0x0B31 +#define GL_LIST_BASE 0x0B32 +#define GL_LIST_INDEX 0x0B33 +#define GL_POLYGON_MODE 0x0B40 +#define GL_POLYGON_SMOOTH 0x0B41 +#define GL_POLYGON_STIPPLE 0x0B42 +#define GL_EDGE_FLAG 0x0B43 +#define GL_CULL_FACE 0x0B44 +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_LIGHTING 0x0B50 +#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 +#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 +#define GL_LIGHT_MODEL_AMBIENT 0x0B53 +#define GL_SHADE_MODEL 0x0B54 +#define GL_COLOR_MATERIAL_FACE 0x0B55 +#define GL_COLOR_MATERIAL_PARAMETER 0x0B56 +#define GL_COLOR_MATERIAL 0x0B57 +#define GL_FOG 0x0B60 +#define GL_FOG_INDEX 0x0B61 +#define GL_FOG_DENSITY 0x0B62 +#define GL_FOG_START 0x0B63 +#define GL_FOG_END 0x0B64 +#define GL_FOG_MODE 0x0B65 +#define GL_FOG_COLOR 0x0B66 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_TEST 0x0B71 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_ACCUM_CLEAR_VALUE 0x0B80 +#define GL_STENCIL_TEST 0x0B90 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_MATRIX_MODE 0x0BA0 +#define GL_NORMALIZE 0x0BA1 +#define GL_VIEWPORT 0x0BA2 +#define GL_MODELVIEW_STACK_DEPTH 0x0BA3 +#define GL_PROJECTION_STACK_DEPTH 0x0BA4 +#define GL_TEXTURE_STACK_DEPTH 0x0BA5 +#define GL_MODELVIEW_MATRIX 0x0BA6 +#define GL_PROJECTION_MATRIX 0x0BA7 +#define GL_TEXTURE_MATRIX 0x0BA8 +#define GL_ATTRIB_STACK_DEPTH 0x0BB0 +#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 +#define GL_ALPHA_TEST 0x0BC0 +#define GL_ALPHA_TEST_FUNC 0x0BC1 +#define GL_ALPHA_TEST_REF 0x0BC2 +#define GL_DITHER 0x0BD0 +#define GL_BLEND_DST 0x0BE0 +#define GL_BLEND_SRC 0x0BE1 +#define GL_BLEND 0x0BE2 +#define GL_LOGIC_OP_MODE 0x0BF0 +#define GL_INDEX_LOGIC_OP 0x0BF1 +#define GL_COLOR_LOGIC_OP 0x0BF2 +#define GL_AUX_BUFFERS 0x0C00 +#define GL_DRAW_BUFFER 0x0C01 +#define GL_READ_BUFFER 0x0C02 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_INDEX_CLEAR_VALUE 0x0C20 +#define GL_INDEX_WRITEMASK 0x0C21 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_INDEX_MODE 0x0C30 +#define GL_RGBA_MODE 0x0C31 +#define GL_DOUBLEBUFFER 0x0C32 +#define GL_STEREO 0x0C33 +#define GL_RENDER_MODE 0x0C40 +#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 +#define GL_POINT_SMOOTH_HINT 0x0C51 +#define GL_LINE_SMOOTH_HINT 0x0C52 +#define GL_POLYGON_SMOOTH_HINT 0x0C53 +#define GL_FOG_HINT 0x0C54 +#define GL_TEXTURE_GEN_S 0x0C60 +#define GL_TEXTURE_GEN_T 0x0C61 +#define GL_TEXTURE_GEN_R 0x0C62 +#define GL_TEXTURE_GEN_Q 0x0C63 +#define GL_PIXEL_MAP_I_TO_I 0x0C70 +#define GL_PIXEL_MAP_S_TO_S 0x0C71 +#define GL_PIXEL_MAP_I_TO_R 0x0C72 +#define GL_PIXEL_MAP_I_TO_G 0x0C73 +#define GL_PIXEL_MAP_I_TO_B 0x0C74 +#define GL_PIXEL_MAP_I_TO_A 0x0C75 +#define GL_PIXEL_MAP_R_TO_R 0x0C76 +#define GL_PIXEL_MAP_G_TO_G 0x0C77 +#define GL_PIXEL_MAP_B_TO_B 0x0C78 +#define GL_PIXEL_MAP_A_TO_A 0x0C79 +#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 +#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 +#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2 +#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3 +#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4 +#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5 +#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6 +#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7 +#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8 +#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9 +#define GL_UNPACK_SWAP_BYTES 0x0CF0 +#define GL_UNPACK_LSB_FIRST 0x0CF1 +#define GL_UNPACK_ROW_LENGTH 0x0CF2 +#define GL_UNPACK_SKIP_ROWS 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS 0x0CF4 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_SWAP_BYTES 0x0D00 +#define GL_PACK_LSB_FIRST 0x0D01 +#define GL_PACK_ROW_LENGTH 0x0D02 +#define GL_PACK_SKIP_ROWS 0x0D03 +#define GL_PACK_SKIP_PIXELS 0x0D04 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_MAP_COLOR 0x0D10 +#define GL_MAP_STENCIL 0x0D11 +#define GL_INDEX_SHIFT 0x0D12 +#define GL_INDEX_OFFSET 0x0D13 +#define GL_RED_SCALE 0x0D14 +#define GL_RED_BIAS 0x0D15 +#define GL_ZOOM_X 0x0D16 +#define GL_ZOOM_Y 0x0D17 +#define GL_GREEN_SCALE 0x0D18 +#define GL_GREEN_BIAS 0x0D19 +#define GL_BLUE_SCALE 0x0D1A +#define GL_BLUE_BIAS 0x0D1B +#define GL_ALPHA_SCALE 0x0D1C +#define GL_ALPHA_BIAS 0x0D1D +#define GL_DEPTH_SCALE 0x0D1E +#define GL_DEPTH_BIAS 0x0D1F +#define GL_MAX_EVAL_ORDER 0x0D30 +#define GL_MAX_LIGHTS 0x0D31 +#define GL_MAX_CLIP_PLANES 0x0D32 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_PIXEL_MAP_TABLE 0x0D34 +#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35 +#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 +#define GL_MAX_NAME_STACK_DEPTH 0x0D37 +#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 +#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_INDEX_BITS 0x0D51 +#define GL_RED_BITS 0x0D52 +#define GL_GREEN_BITS 0x0D53 +#define GL_BLUE_BITS 0x0D54 +#define GL_ALPHA_BITS 0x0D55 +#define GL_DEPTH_BITS 0x0D56 +#define GL_STENCIL_BITS 0x0D57 +#define GL_ACCUM_RED_BITS 0x0D58 +#define GL_ACCUM_GREEN_BITS 0x0D59 +#define GL_ACCUM_BLUE_BITS 0x0D5A +#define GL_ACCUM_ALPHA_BITS 0x0D5B +#define GL_NAME_STACK_DEPTH 0x0D70 +#define GL_AUTO_NORMAL 0x0D80 +#define GL_MAP1_COLOR_4 0x0D90 +#define GL_MAP1_INDEX 0x0D91 +#define GL_MAP1_NORMAL 0x0D92 +#define GL_MAP1_TEXTURE_COORD_1 0x0D93 +#define GL_MAP1_TEXTURE_COORD_2 0x0D94 +#define GL_MAP1_TEXTURE_COORD_3 0x0D95 +#define GL_MAP1_TEXTURE_COORD_4 0x0D96 +#define GL_MAP1_VERTEX_3 0x0D97 +#define GL_MAP1_VERTEX_4 0x0D98 +#define GL_MAP2_COLOR_4 0x0DB0 +#define GL_MAP2_INDEX 0x0DB1 +#define GL_MAP2_NORMAL 0x0DB2 +#define GL_MAP2_TEXTURE_COORD_1 0x0DB3 +#define GL_MAP2_TEXTURE_COORD_2 0x0DB4 +#define GL_MAP2_TEXTURE_COORD_3 0x0DB5 +#define GL_MAP2_TEXTURE_COORD_4 0x0DB6 +#define GL_MAP2_VERTEX_3 0x0DB7 +#define GL_MAP2_VERTEX_4 0x0DB8 +#define GL_MAP1_GRID_DOMAIN 0x0DD0 +#define GL_MAP1_GRID_SEGMENTS 0x0DD1 +#define GL_MAP2_GRID_DOMAIN 0x0DD2 +#define GL_MAP2_GRID_SEGMENTS 0x0DD3 +#define GL_TEXTURE_1D 0x0DE0 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 +#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 +#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 +#define GL_SELECTION_BUFFER_POINTER 0x0DF3 +#define GL_SELECTION_BUFFER_SIZE 0x0DF4 +#define GL_TEXTURE_WIDTH 0x1000 +#define GL_TRANSFORM_BIT 0x00001000 +#define GL_TEXTURE_HEIGHT 0x1001 +#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 +#define GL_TEXTURE_BORDER_COLOR 0x1004 +#define GL_TEXTURE_BORDER 0x1005 +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 +#define GL_AMBIENT 0x1200 +#define GL_DIFFUSE 0x1201 +#define GL_SPECULAR 0x1202 +#define GL_POSITION 0x1203 +#define GL_SPOT_DIRECTION 0x1204 +#define GL_SPOT_EXPONENT 0x1205 +#define GL_SPOT_CUTOFF 0x1206 +#define GL_CONSTANT_ATTENUATION 0x1207 +#define GL_LINEAR_ATTENUATION 0x1208 +#define GL_QUADRATIC_ATTENUATION 0x1209 +#define GL_COMPILE 0x1300 +#define GL_COMPILE_AND_EXECUTE 0x1301 +#define GL_BYTE 0x1400 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_SHORT 0x1402 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_INT 0x1404 +#define GL_UNSIGNED_INT 0x1405 +#define GL_FLOAT 0x1406 +#define GL_2_BYTES 0x1407 +#define GL_3_BYTES 0x1408 +#define GL_4_BYTES 0x1409 +#define GL_DOUBLE 0x140A +#define GL_CLEAR 0x1500 +#define GL_AND 0x1501 +#define GL_AND_REVERSE 0x1502 +#define GL_COPY 0x1503 +#define GL_AND_INVERTED 0x1504 +#define GL_NOOP 0x1505 +#define GL_XOR 0x1506 +#define GL_OR 0x1507 +#define GL_NOR 0x1508 +#define GL_EQUIV 0x1509 +#define GL_INVERT 0x150A +#define GL_OR_REVERSE 0x150B +#define GL_COPY_INVERTED 0x150C +#define GL_OR_INVERTED 0x150D +#define GL_NAND 0x150E +#define GL_SET 0x150F +#define GL_EMISSION 0x1600 +#define GL_SHININESS 0x1601 +#define GL_AMBIENT_AND_DIFFUSE 0x1602 +#define GL_COLOR_INDEXES 0x1603 +#define GL_MODELVIEW 0x1700 +#define GL_PROJECTION 0x1701 +#define GL_TEXTURE 0x1702 +#define GL_COLOR 0x1800 +#define GL_DEPTH 0x1801 +#define GL_STENCIL 0x1802 +#define GL_COLOR_INDEX 0x1900 +#define GL_STENCIL_INDEX 0x1901 +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_RED 0x1903 +#define GL_GREEN 0x1904 +#define GL_BLUE 0x1905 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A +#define GL_BITMAP 0x1A00 +#define GL_POINT 0x1B00 +#define GL_LINE 0x1B01 +#define GL_FILL 0x1B02 +#define GL_RENDER 0x1C00 +#define GL_FEEDBACK 0x1C01 +#define GL_SELECT 0x1C02 +#define GL_FLAT 0x1D00 +#define GL_SMOOTH 0x1D01 +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 +#define GL_S 0x2000 +#define GL_ENABLE_BIT 0x00002000 +#define GL_T 0x2001 +#define GL_R 0x2002 +#define GL_Q 0x2003 +#define GL_MODULATE 0x2100 +#define GL_DECAL 0x2101 +#define GL_TEXTURE_ENV_MODE 0x2200 +#define GL_TEXTURE_ENV_COLOR 0x2201 +#define GL_TEXTURE_ENV 0x2300 +#define GL_EYE_LINEAR 0x2400 +#define GL_OBJECT_LINEAR 0x2401 +#define GL_SPHERE_MAP 0x2402 +#define GL_TEXTURE_GEN_MODE 0x2500 +#define GL_OBJECT_PLANE 0x2501 +#define GL_EYE_PLANE 0x2502 +#define GL_NEAREST 0x2600 +#define GL_LINEAR 0x2601 +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 +#define GL_CLAMP 0x2900 +#define GL_REPEAT 0x2901 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_POINT 0x2A01 +#define GL_POLYGON_OFFSET_LINE 0x2A02 +#define GL_R3_G3_B2 0x2A10 +#define GL_V2F 0x2A20 +#define GL_V3F 0x2A21 +#define GL_C4UB_V2F 0x2A22 +#define GL_C4UB_V3F 0x2A23 +#define GL_C3F_V3F 0x2A24 +#define GL_N3F_V3F 0x2A25 +#define GL_C4F_N3F_V3F 0x2A26 +#define GL_T2F_V3F 0x2A27 +#define GL_T4F_V4F 0x2A28 +#define GL_T2F_C4UB_V3F 0x2A29 +#define GL_T2F_C3F_V3F 0x2A2A +#define GL_T2F_N3F_V3F 0x2A2B +#define GL_T2F_C4F_N3F_V3F 0x2A2C +#define GL_T4F_C4F_N3F_V4F 0x2A2D +#define GL_CLIP_PLANE0 0x3000 +#define GL_CLIP_PLANE1 0x3001 +#define GL_CLIP_PLANE2 0x3002 +#define GL_CLIP_PLANE3 0x3003 +#define GL_CLIP_PLANE4 0x3004 +#define GL_CLIP_PLANE5 0x3005 +#define GL_LIGHT0 0x4000 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#define GL_LIGHT1 0x4001 +#define GL_LIGHT2 0x4002 +#define GL_LIGHT3 0x4003 +#define GL_LIGHT4 0x4004 +#define GL_LIGHT5 0x4005 +#define GL_LIGHT6 0x4006 +#define GL_LIGHT7 0x4007 +#define GL_HINT_BIT 0x00008000 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_ALPHA4 0x803B +#define GL_ALPHA8 0x803C +#define GL_ALPHA12 0x803D +#define GL_ALPHA16 0x803E +#define GL_LUMINANCE4 0x803F +#define GL_LUMINANCE8 0x8040 +#define GL_LUMINANCE12 0x8041 +#define GL_LUMINANCE16 0x8042 +#define GL_LUMINANCE4_ALPHA4 0x8043 +#define GL_LUMINANCE6_ALPHA2 0x8044 +#define GL_LUMINANCE8_ALPHA8 0x8045 +#define GL_LUMINANCE12_ALPHA4 0x8046 +#define GL_LUMINANCE12_ALPHA12 0x8047 +#define GL_LUMINANCE16_ALPHA16 0x8048 +#define GL_INTENSITY 0x8049 +#define GL_INTENSITY4 0x804A +#define GL_INTENSITY8 0x804B +#define GL_INTENSITY12 0x804C +#define GL_INTENSITY16 0x804D +#define GL_RGB4 0x804F +#define GL_RGB5 0x8050 +#define GL_RGB8 0x8051 +#define GL_RGB10 0x8052 +#define GL_RGB12 0x8053 +#define GL_RGB16 0x8054 +#define GL_RGBA2 0x8055 +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGBA8 0x8058 +#define GL_RGB10_A2 0x8059 +#define GL_RGBA12 0x805A +#define GL_RGBA16 0x805B +#define GL_TEXTURE_RED_SIZE 0x805C +#define GL_TEXTURE_GREEN_SIZE 0x805D +#define GL_TEXTURE_BLUE_SIZE 0x805E +#define GL_TEXTURE_ALPHA_SIZE 0x805F +#define GL_TEXTURE_LUMINANCE_SIZE 0x8060 +#define GL_TEXTURE_INTENSITY_SIZE 0x8061 +#define GL_PROXY_TEXTURE_1D 0x8063 +#define GL_PROXY_TEXTURE_2D 0x8064 +#define GL_TEXTURE_PRIORITY 0x8066 +#define GL_TEXTURE_RESIDENT 0x8067 +#define GL_TEXTURE_BINDING_1D 0x8068 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_VERTEX_ARRAY 0x8074 +#define GL_NORMAL_ARRAY 0x8075 +#define GL_COLOR_ARRAY 0x8076 +#define GL_INDEX_ARRAY 0x8077 +#define GL_TEXTURE_COORD_ARRAY 0x8078 +#define GL_EDGE_FLAG_ARRAY 0x8079 +#define GL_VERTEX_ARRAY_SIZE 0x807A +#define GL_VERTEX_ARRAY_TYPE 0x807B +#define GL_VERTEX_ARRAY_STRIDE 0x807C +#define GL_NORMAL_ARRAY_TYPE 0x807E +#define GL_NORMAL_ARRAY_STRIDE 0x807F +#define GL_COLOR_ARRAY_SIZE 0x8081 +#define GL_COLOR_ARRAY_TYPE 0x8082 +#define GL_COLOR_ARRAY_STRIDE 0x8083 +#define GL_INDEX_ARRAY_TYPE 0x8085 +#define GL_INDEX_ARRAY_STRIDE 0x8086 +#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 +#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 +#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A +#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C +#define GL_VERTEX_ARRAY_POINTER 0x808E +#define GL_NORMAL_ARRAY_POINTER 0x808F +#define GL_COLOR_ARRAY_POINTER 0x8090 +#define GL_INDEX_ARRAY_POINTER 0x8091 +#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 +#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093 +#define GL_COLOR_INDEX1_EXT 0x80E2 +#define GL_COLOR_INDEX2_EXT 0x80E3 +#define GL_COLOR_INDEX4_EXT 0x80E4 +#define GL_COLOR_INDEX8_EXT 0x80E5 +#define GL_COLOR_INDEX12_EXT 0x80E6 +#define GL_COLOR_INDEX16_EXT 0x80E7 +#define GL_EVAL_BIT 0x00010000 +#define GL_LIST_BIT 0x00020000 +#define GL_TEXTURE_BIT 0x00040000 +#define GL_SCISSOR_BIT 0x00080000 +#define GL_ALL_ATTRIB_BITS 0x000fffff +#define GL_CLIENT_ALL_ATTRIB_BITS 0xffffffff + +/* ----------------------------- GL_VERSION_1_2 ---------------------------- */ + +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_UNSIGNED_BYTE_3_3_2 0x8032 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_INT_8_8_8_8 0x8035 +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 +#define GL_RESCALE_NORMAL 0x803A +#define GL_TEXTURE_BINDING_3D 0x806A +#define GL_PACK_SKIP_IMAGES 0x806B +#define GL_PACK_IMAGE_HEIGHT 0x806C +#define GL_UNPACK_SKIP_IMAGES 0x806D +#define GL_UNPACK_IMAGE_HEIGHT 0x806E +#define GL_TEXTURE_3D 0x806F +#define GL_PROXY_TEXTURE_3D 0x8070 +#define GL_TEXTURE_DEPTH 0x8071 +#define GL_TEXTURE_WRAP_R 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 +#define GL_BGR 0x80E0 +#define GL_BGRA 0x80E1 +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 +#define GL_SINGLE_COLOR 0x81F9 +#define GL_SEPARATE_SPECULAR_COLOR 0x81FA +#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E + +/* ----------------------------- GL_VERSION_1_3 ---------------------------- */ + +#define GL_MULTISAMPLE 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_CLAMP_TO_BORDER 0x812D +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 +#define GL_MAX_TEXTURE_UNITS 0x84E2 +#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 +#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 +#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 +#define GL_SUBTRACT 0x84E7 +#define GL_COMPRESSED_ALPHA 0x84E9 +#define GL_COMPRESSED_LUMINANCE 0x84EA +#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB +#define GL_COMPRESSED_INTENSITY 0x84EC +#define GL_COMPRESSED_RGB 0x84ED +#define GL_COMPRESSED_RGBA 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT 0x84EF +#define GL_NORMAL_MAP 0x8511 +#define GL_REFLECTION_MAP 0x8512 +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#define GL_COMBINE 0x8570 +#define GL_COMBINE_RGB 0x8571 +#define GL_COMBINE_ALPHA 0x8572 +#define GL_RGB_SCALE 0x8573 +#define GL_ADD_SIGNED 0x8574 +#define GL_INTERPOLATE 0x8575 +#define GL_CONSTANT 0x8576 +#define GL_PRIMARY_COLOR 0x8577 +#define GL_PREVIOUS 0x8578 +#define GL_SOURCE0_RGB 0x8580 +#define GL_SOURCE1_RGB 0x8581 +#define GL_SOURCE2_RGB 0x8582 +#define GL_SOURCE0_ALPHA 0x8588 +#define GL_SOURCE1_ALPHA 0x8589 +#define GL_SOURCE2_ALPHA 0x858A +#define GL_OPERAND0_RGB 0x8590 +#define GL_OPERAND1_RGB 0x8591 +#define GL_OPERAND2_RGB 0x8592 +#define GL_OPERAND0_ALPHA 0x8598 +#define GL_OPERAND1_ALPHA 0x8599 +#define GL_OPERAND2_ALPHA 0x859A +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 +#define GL_TEXTURE_COMPRESSED 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_DOT3_RGB 0x86AE +#define GL_DOT3_RGBA 0x86AF +#define GL_MULTISAMPLE_BIT 0x20000000 + +/* ----------------------------- GL_VERSION_1_4 ---------------------------- */ + +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_POINT_SIZE_MIN 0x8126 +#define GL_POINT_SIZE_MAX 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 +#define GL_POINT_DISTANCE_ATTENUATION 0x8129 +#define GL_GENERATE_MIPMAP 0x8191 +#define GL_GENERATE_MIPMAP_HINT 0x8192 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_DEPTH_COMPONENT24 0x81A6 +#define GL_DEPTH_COMPONENT32 0x81A7 +#define GL_MIRRORED_REPEAT 0x8370 +#define GL_FOG_COORDINATE_SOURCE 0x8450 +#define GL_FOG_COORDINATE 0x8451 +#define GL_FRAGMENT_DEPTH 0x8452 +#define GL_CURRENT_FOG_COORDINATE 0x8453 +#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454 +#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455 +#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456 +#define GL_FOG_COORDINATE_ARRAY 0x8457 +#define GL_COLOR_SUM 0x8458 +#define GL_CURRENT_SECONDARY_COLOR 0x8459 +#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A +#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B +#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C +#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D +#define GL_SECONDARY_COLOR_ARRAY 0x845E +#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD +#define GL_TEXTURE_FILTER_CONTROL 0x8500 +#define GL_TEXTURE_LOD_BIAS 0x8501 +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 +#define GL_TEXTURE_DEPTH_SIZE 0x884A +#define GL_DEPTH_TEXTURE_MODE 0x884B +#define GL_TEXTURE_COMPARE_MODE 0x884C +#define GL_TEXTURE_COMPARE_FUNC 0x884D +#define GL_COMPARE_R_TO_TEXTURE 0x884E + +/* ----------------------------- GL_VERSION_1_5 ---------------------------- */ + +#define GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE +#define GL_FOG_COORD GL_FOG_COORDINATE +#define GL_FOG_COORD_ARRAY GL_FOG_COORDINATE_ARRAY +#define GL_SRC0_RGB GL_SOURCE0_RGB +#define GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER +#define GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE +#define GL_SRC1_ALPHA GL_SOURCE1_ALPHA +#define GL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE +#define GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE +#define GL_SRC0_ALPHA GL_SOURCE0_ALPHA +#define GL_SRC1_RGB GL_SOURCE1_RGB +#define GL_FOG_COORD_ARRAY_BUFFER_BINDING GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING +#define GL_SRC2_ALPHA GL_SOURCE2_ALPHA +#define GL_SRC2_RGB GL_SOURCE2_RGB +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_QUERY_COUNTER_BITS 0x8864 +#define GL_CURRENT_QUERY 0x8865 +#define GL_QUERY_RESULT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE 0x8867 +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 +#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 +#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 +#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899 +#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A +#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B +#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C +#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D +#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_READ_ONLY 0x88B8 +#define GL_WRITE_ONLY 0x88B9 +#define GL_READ_WRITE 0x88BA +#define GL_BUFFER_ACCESS 0x88BB +#define GL_BUFFER_MAPPED 0x88BC +#define GL_BUFFER_MAP_POINTER 0x88BD +#define GL_STREAM_DRAW 0x88E0 +#define GL_STREAM_READ 0x88E1 +#define GL_STREAM_COPY 0x88E2 +#define GL_STATIC_DRAW 0x88E4 +#define GL_STATIC_READ 0x88E5 +#define GL_STATIC_COPY 0x88E6 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_DYNAMIC_READ 0x88E9 +#define GL_DYNAMIC_COPY 0x88EA +#define GL_SAMPLES_PASSED 0x8914 + +typedef ptrdiff_t GLintptr; +typedef ptrdiff_t GLsizeiptr; + +/* ----------------------------- GL_VERSION_2_0 ---------------------------- */ + +#define GL_BLEND_EQUATION_RGB GL_BLEND_EQUATION +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 +#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_MAX_DRAW_BUFFERS 0x8824 +#define GL_DRAW_BUFFER0 0x8825 +#define GL_DRAW_BUFFER1 0x8826 +#define GL_DRAW_BUFFER2 0x8827 +#define GL_DRAW_BUFFER3 0x8828 +#define GL_DRAW_BUFFER4 0x8829 +#define GL_DRAW_BUFFER5 0x882A +#define GL_DRAW_BUFFER6 0x882B +#define GL_DRAW_BUFFER7 0x882C +#define GL_DRAW_BUFFER8 0x882D +#define GL_DRAW_BUFFER9 0x882E +#define GL_DRAW_BUFFER10 0x882F +#define GL_DRAW_BUFFER11 0x8830 +#define GL_DRAW_BUFFER12 0x8831 +#define GL_DRAW_BUFFER13 0x8832 +#define GL_DRAW_BUFFER14 0x8833 +#define GL_DRAW_BUFFER15 0x8834 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_POINT_SPRITE 0x8861 +#define GL_COORD_REPLACE 0x8862 +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_MAX_TEXTURE_COORDS 0x8871 +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A +#define GL_MAX_VARYING_FLOATS 0x8B4B +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_SHADER_TYPE 0x8B4F +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT4 0x8B5C +#define GL_SAMPLER_1D 0x8B5D +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_3D 0x8B5F +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_SAMPLER_1D_SHADOW 0x8B61 +#define GL_SAMPLER_2D_SHADOW 0x8B62 +#define GL_DELETE_STATUS 0x8B80 +#define GL_COMPILE_STATUS 0x8B81 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D +#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 +#define GL_LOWER_LEFT 0x8CA1 +#define GL_UPPER_LEFT 0x8CA2 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 + +/* ----------------------------- GL_VERSION_3_0 ---------------------------- */ + +#define GL_MAX_CLIP_DISTANCES GL_MAX_CLIP_PLANES +#define GL_CLIP_DISTANCE5 GL_CLIP_PLANE5 +#define GL_CLIP_DISTANCE1 GL_CLIP_PLANE1 +#define GL_CLIP_DISTANCE3 GL_CLIP_PLANE3 +#define GL_COMPARE_REF_TO_TEXTURE GL_COMPARE_R_TO_TEXTURE_ARB +#define GL_CLIP_DISTANCE0 GL_CLIP_PLANE0 +#define GL_CLIP_DISTANCE4 GL_CLIP_PLANE4 +#define GL_CLIP_DISTANCE2 GL_CLIP_PLANE2 +#define GL_MAX_VARYING_COMPONENTS GL_MAX_VARYING_FLOATS +#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x0001 +#define GL_MAJOR_VERSION 0x821B +#define GL_MINOR_VERSION 0x821C +#define GL_NUM_EXTENSIONS 0x821D +#define GL_CONTEXT_FLAGS 0x821E +#define GL_DEPTH_BUFFER 0x8223 +#define GL_STENCIL_BUFFER 0x8224 +#define GL_RGBA32F 0x8814 +#define GL_RGB32F 0x8815 +#define GL_RGBA16F 0x881A +#define GL_RGB16F 0x881B +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD +#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF +#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 +#define GL_CLAMP_VERTEX_COLOR 0x891A +#define GL_CLAMP_FRAGMENT_COLOR 0x891B +#define GL_CLAMP_READ_COLOR 0x891C +#define GL_FIXED_ONLY 0x891D +#define GL_TEXTURE_RED_TYPE 0x8C10 +#define GL_TEXTURE_GREEN_TYPE 0x8C11 +#define GL_TEXTURE_BLUE_TYPE 0x8C12 +#define GL_TEXTURE_ALPHA_TYPE 0x8C13 +#define GL_TEXTURE_LUMINANCE_TYPE 0x8C14 +#define GL_TEXTURE_INTENSITY_TYPE 0x8C15 +#define GL_TEXTURE_DEPTH_TYPE 0x8C16 +#define GL_TEXTURE_1D_ARRAY 0x8C18 +#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B +#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C +#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D +#define GL_R11F_G11F_B10F 0x8C3A +#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B +#define GL_RGB9_E5 0x8C3D +#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E +#define GL_TEXTURE_SHARED_SIZE 0x8C3F +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 +#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 +#define GL_PRIMITIVES_GENERATED 0x8C87 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 +#define GL_RASTERIZER_DISCARD 0x8C89 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B +#define GL_INTERLEAVED_ATTRIBS 0x8C8C +#define GL_SEPARATE_ATTRIBS 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F +#define GL_RGBA32UI 0x8D70 +#define GL_RGB32UI 0x8D71 +#define GL_RGBA16UI 0x8D76 +#define GL_RGB16UI 0x8D77 +#define GL_RGBA8UI 0x8D7C +#define GL_RGB8UI 0x8D7D +#define GL_RGBA32I 0x8D82 +#define GL_RGB32I 0x8D83 +#define GL_RGBA16I 0x8D88 +#define GL_RGB16I 0x8D89 +#define GL_RGBA8I 0x8D8E +#define GL_RGB8I 0x8D8F +#define GL_RED_INTEGER 0x8D94 +#define GL_GREEN_INTEGER 0x8D95 +#define GL_BLUE_INTEGER 0x8D96 +#define GL_ALPHA_INTEGER 0x8D97 +#define GL_RGB_INTEGER 0x8D98 +#define GL_RGBA_INTEGER 0x8D99 +#define GL_BGR_INTEGER 0x8D9A +#define GL_BGRA_INTEGER 0x8D9B +#define GL_SAMPLER_1D_ARRAY 0x8DC0 +#define GL_SAMPLER_2D_ARRAY 0x8DC1 +#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 +#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 +#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 +#define GL_UNSIGNED_INT_VEC2 0x8DC6 +#define GL_UNSIGNED_INT_VEC3 0x8DC7 +#define GL_UNSIGNED_INT_VEC4 0x8DC8 +#define GL_INT_SAMPLER_1D 0x8DC9 +#define GL_INT_SAMPLER_2D 0x8DCA +#define GL_INT_SAMPLER_3D 0x8DCB +#define GL_INT_SAMPLER_CUBE 0x8DCC +#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE +#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF +#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 +#define GL_QUERY_WAIT 0x8E13 +#define GL_QUERY_NO_WAIT 0x8E14 +#define GL_QUERY_BY_REGION_WAIT 0x8E15 +#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 + +/* ----------------------------- GL_VERSION_3_2 ---------------------------- */ + +#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001 +#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002 +#define GL_LINES_ADJACENCY 0x000A +#define GL_LINE_STRIP_ADJACENCY 0x000B +#define GL_TRIANGLES_ADJACENCY 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D +#define GL_PROGRAM_POINT_SIZE 0x8642 +#define GL_GEOMETRY_VERTICES_OUT 0x8916 +#define GL_GEOMETRY_INPUT_TYPE 0x8917 +#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 +#define GL_GEOMETRY_SHADER 0x8DD9 +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 +#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124 +#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 +#define GL_CONTEXT_PROFILE_MASK 0x9126 + + +/* --------------------------- GL_ARB_texture_rg --------------------------- */ + +#define GL_COMPRESSED_RED 0x8225 +#define GL_COMPRESSED_RG 0x8226 +#define GL_RG 0x8227 +#define GL_RG_INTEGER 0x8228 +#define GL_R8 0x8229 +#define GL_R16 0x822A +#define GL_RG8 0x822B +#define GL_RG16 0x822C +#define GL_R16F 0x822D +#define GL_R32F 0x822E +#define GL_RG16F 0x822F +#define GL_RG32F 0x8230 +#define GL_R8I 0x8231 +#define GL_R8UI 0x8232 +#define GL_R16I 0x8233 +#define GL_R16UI 0x8234 +#define GL_R32I 0x8235 +#define GL_R32UI 0x8236 +#define GL_RG8I 0x8237 +#define GL_RG8UI 0x8238 +#define GL_RG16I 0x8239 +#define GL_RG16UI 0x823A +#define GL_RG32I 0x823B +#define GL_RG32UI 0x823C + +/* ----------------------- GL_ARB_framebuffer_object ----------------------- */ + +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 +#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 +#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 +#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 +#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 +#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 +#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 +#define GL_FRAMEBUFFER_DEFAULT 0x8218 +#define GL_FRAMEBUFFER_UNDEFINED 0x8219 +#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A +#define GL_INDEX 0x8222 +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_DEPTH_STENCIL 0x84F9 +#define GL_UNSIGNED_INT_24_8 0x84FA +#define GL_DEPTH24_STENCIL8 0x88F0 +#define GL_TEXTURE_STENCIL_SIZE 0x88F1 +#define GL_UNSIGNED_NORMALIZED 0x8C17 +#define GL_SRGB 0x8C40 +#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_READ_FRAMEBUFFER 0x8CA8 +#define GL_DRAW_FRAMEBUFFER 0x8CA9 +#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA +#define GL_RENDERBUFFER_SAMPLES 0x8CAB +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB +#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_COLOR_ATTACHMENT1 0x8CE1 +#define GL_COLOR_ATTACHMENT2 0x8CE2 +#define GL_COLOR_ATTACHMENT3 0x8CE3 +#define GL_COLOR_ATTACHMENT4 0x8CE4 +#define GL_COLOR_ATTACHMENT5 0x8CE5 +#define GL_COLOR_ATTACHMENT6 0x8CE6 +#define GL_COLOR_ATTACHMENT7 0x8CE7 +#define GL_COLOR_ATTACHMENT8 0x8CE8 +#define GL_COLOR_ATTACHMENT9 0x8CE9 +#define GL_COLOR_ATTACHMENT10 0x8CEA +#define GL_COLOR_ATTACHMENT11 0x8CEB +#define GL_COLOR_ATTACHMENT12 0x8CEC +#define GL_COLOR_ATTACHMENT13 0x8CED +#define GL_COLOR_ATTACHMENT14 0x8CEE +#define GL_COLOR_ATTACHMENT15 0x8CEF +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_STENCIL_INDEX1 0x8D46 +#define GL_STENCIL_INDEX4 0x8D47 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_STENCIL_INDEX16 0x8D49 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 +#define GL_MAX_SAMPLES 0x8D57 + +/* ---------------------- GL_ARB_uniform_buffer_object --------------------- */ + +#define GL_UNIFORM_BUFFER 0x8A11 +#define GL_UNIFORM_BUFFER_BINDING 0x8A28 +#define GL_UNIFORM_BUFFER_START 0x8A29 +#define GL_UNIFORM_BUFFER_SIZE 0x8A2A +#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C +#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D +#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E +#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F +#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 +#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 +#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 +#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 +#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 +#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 +#define GL_UNIFORM_TYPE 0x8A37 +#define GL_UNIFORM_SIZE 0x8A38 +#define GL_UNIFORM_NAME_LENGTH 0x8A39 +#define GL_UNIFORM_BLOCK_INDEX 0x8A3A +#define GL_UNIFORM_OFFSET 0x8A3B +#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C +#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D +#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E +#define GL_UNIFORM_BLOCK_BINDING 0x8A3F +#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 +#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 +#define GL_INVALID_INDEX 0xFFFFFFFF + +/* ---------------------- GL_ARB_vertex_buffer_object ---------------------- */ + +#define GL_BUFFER_SIZE_ARB 0x8764 +#define GL_BUFFER_USAGE_ARB 0x8765 +#define GL_ARRAY_BUFFER_ARB 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 +#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895 +#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896 +#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897 +#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898 +#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899 +#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A +#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B +#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C +#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D +#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F +#define GL_READ_ONLY_ARB 0x88B8 +#define GL_WRITE_ONLY_ARB 0x88B9 +#define GL_READ_WRITE_ARB 0x88BA +#define GL_BUFFER_ACCESS_ARB 0x88BB +#define GL_BUFFER_MAPPED_ARB 0x88BC +#define GL_BUFFER_MAP_POINTER_ARB 0x88BD +#define GL_STREAM_DRAW_ARB 0x88E0 +#define GL_STREAM_READ_ARB 0x88E1 +#define GL_STREAM_COPY_ARB 0x88E2 +#define GL_STATIC_DRAW_ARB 0x88E4 +#define GL_STATIC_READ_ARB 0x88E5 +#define GL_STATIC_COPY_ARB 0x88E6 +#define GL_DYNAMIC_DRAW_ARB 0x88E8 +#define GL_DYNAMIC_READ_ARB 0x88E9 +#define GL_DYNAMIC_COPY_ARB 0x88EA + +typedef ptrdiff_t GLintptrARB; +typedef ptrdiff_t GLsizeiptrARB; + +/* -------------------------- GL_EXT_texture_array ------------------------- */ + +#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E +#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF +#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18 +#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 +#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A +#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B +#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C +#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D + +/* ----------------------------- GL_ARB_imaging ---------------------------- */ + +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_BLEND_COLOR 0x8005 +#define GL_FUNC_ADD 0x8006 +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +#define GL_BLEND_EQUATION 0x8009 +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_CONVOLUTION_1D 0x8010 +#define GL_CONVOLUTION_2D 0x8011 +#define GL_SEPARABLE_2D 0x8012 +#define GL_CONVOLUTION_BORDER_MODE 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS 0x8015 +#define GL_REDUCE 0x8016 +#define GL_CONVOLUTION_FORMAT 0x8017 +#define GL_CONVOLUTION_WIDTH 0x8018 +#define GL_CONVOLUTION_HEIGHT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT 0x801B +#define GL_POST_CONVOLUTION_RED_SCALE 0x801C +#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D +#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E +#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F +#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 +#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 +#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 +#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 +#define GL_HISTOGRAM 0x8024 +#define GL_PROXY_HISTOGRAM 0x8025 +#define GL_HISTOGRAM_WIDTH 0x8026 +#define GL_HISTOGRAM_FORMAT 0x8027 +#define GL_HISTOGRAM_RED_SIZE 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C +#define GL_HISTOGRAM_SINK 0x802D +#define GL_MINMAX 0x802E +#define GL_MINMAX_FORMAT 0x802F +#define GL_MINMAX_SINK 0x8030 +#define GL_TABLE_TOO_LARGE 0x8031 +#define GL_COLOR_MATRIX 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 +#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 +#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB +#define GL_COLOR_TABLE 0x80D0 +#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 +#define GL_PROXY_COLOR_TABLE 0x80D3 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 +#define GL_COLOR_TABLE_SCALE 0x80D6 +#define GL_COLOR_TABLE_BIAS 0x80D7 +#define GL_COLOR_TABLE_FORMAT 0x80D8 +#define GL_COLOR_TABLE_WIDTH 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF +#define GL_IGNORE_BORDER 0x8150 +#define GL_CONSTANT_BORDER 0x8151 +#define GL_WRAP_BORDER 0x8152 +#define GL_REPLICATE_BORDER 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR 0x8154 + +/* ----------------------- GL_ARB_vertex_array_object ---------------------- */ + +#define GL_VERTEX_ARRAY_BINDING 0x85B5 + +/* ----------------------- GL_ARB_texture_multisample ---------------------- */ + +#define GL_SAMPLE_POSITION 0x8E50 +#define GL_SAMPLE_MASK 0x8E51 +#define GL_SAMPLE_MASK_VALUE 0x8E52 +#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 +#define GL_TEXTURE_SAMPLES 0x9106 +#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 +#define GL_SAMPLER_2D_MULTISAMPLE 0x9108 +#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A +#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B +#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D +#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E +#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F +#define GL_MAX_INTEGER_SAMPLES 0x9110 + +/* --------------------------- GL_EXT_timer_query -------------------------- */ + +#define GL_TIME_ELAPSED_EXT 0x88BF + +#endif //GL_VERSION_3_2 + +#endif //SUPPORT_GL diff --git a/src/ConstantBuffers.cpp b/src/ConstantBuffers.cpp new file mode 100644 index 0000000..57f51ab --- /dev/null +++ b/src/ConstantBuffers.cpp @@ -0,0 +1,189 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "ConstantBuffers.h" +#include "MatrixView.h" + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GlobalConstants::SetBlurConstants(const GFSDK_SSAO_BlurParameters& Params, const GFSDK::SSAO::InputDepthInfo& InputDepth) +{ + float BaseSharpness = Max(Params.Sharpness, 0.f); + BaseSharpness /= InputDepth.MetersToViewSpaceUnits; + + if (Params.SharpnessProfile.Enable) + { + m_Data.fBlurViewDepth0 = Max(Params.SharpnessProfile.ForegroundViewDepth, 0.f); + m_Data.fBlurViewDepth1 = Max(Params.SharpnessProfile.BackgroundViewDepth, m_Data.fBlurViewDepth0 + EPSILON); + m_Data.fBlurSharpness0 = BaseSharpness * Max(Params.SharpnessProfile.ForegroundSharpnessScale, 0.f); + m_Data.fBlurSharpness1 = BaseSharpness; + } + else + { + m_Data.fBlurSharpness0 = BaseSharpness; + m_Data.fBlurSharpness1 = BaseSharpness; + m_Data.fBlurViewDepth0 = 0.f; + m_Data.fBlurViewDepth1 = 1.f; + } +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GlobalConstants::SetDepthThresholdConstants(const GFSDK_SSAO_DepthThreshold& Params) +{ + if (Params.Enable) + { + m_Data.fViewDepthThresholdNegInv = -1.f / Max(Params.MaxViewDepth, EPSILON); + m_Data.fViewDepthThresholdSharpness = Max(Params.Sharpness, 0.f); + } + else + { + m_Data.fViewDepthThresholdNegInv = 0.f; + m_Data.fViewDepthThresholdSharpness = 1.f; + } +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GlobalConstants::SetAORadiusConstants(const GFSDK_SSAO_Parameters& Params, const GFSDK::SSAO::InputDepthInfo& InputDepth) +{ + const float RadiusInMeters = Max(Params.Radius, EPSILON); + const float R = RadiusInMeters * InputDepth.MetersToViewSpaceUnits; + m_Data.fR2 = R * R; + m_Data.fNegInvR2 = -1.f / m_Data.fR2; + + const float TanHalfFovy = InputDepth.ProjectionMatrixInfo.GetTanHalfFovY(); + m_Data.fRadiusToScreen = R * 0.5f / TanHalfFovy * InputDepth.Viewport.Height; + + const float BackgroundViewDepth = Max(Params.BackgroundAO.BackgroundViewDepth, EPSILON); + m_Data.fBackgroundAORadiusPixels = m_Data.fRadiusToScreen / BackgroundViewDepth; + + const float ForegroundViewDepth = Max(Params.ForegroundAO.ForegroundViewDepth, EPSILON); + m_Data.fForegroundAORadiusPixels = m_Data.fRadiusToScreen / ForegroundViewDepth; +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GlobalConstants::SetAOParameters(const GFSDK_SSAO_Parameters& Params, const GFSDK::SSAO::InputDepthInfo& InputDepth) +{ + SetAORadiusConstants(Params, InputDepth); + SetBlurConstants(Params.Blur, InputDepth); + SetDepthThresholdConstants(Params.DepthThreshold); + + m_Data.fPowExponent = Clamp(Params.PowerExponent, 1.f, 8.f); + m_Data.fNDotVBias = Clamp(Params.Bias, 0.0f, 0.5f); + + const float AOAmountScaleFactor = 1.f / (1.f - m_Data.fNDotVBias); + m_Data.fNearAOAmount = Clamp(Params.NearAO, 1.f, 4.f) * AOAmountScaleFactor * 2.f; + m_Data.fFarAOAmount = Clamp(Params.FarAO, 1.f, 4.f) * AOAmountScaleFactor; +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GlobalConstants::SetRenderMask(GFSDK_SSAO_RenderMask RenderMask) +{ + switch (RenderMask) + { + case GFSDK_SSAO_RENDER_DEBUG_NORMAL_X: + m_Data.iDebugNormalComponent = 0; + break; + case GFSDK_SSAO_RENDER_DEBUG_NORMAL_Y: + m_Data.iDebugNormalComponent = 1; + break; + case GFSDK_SSAO_RENDER_DEBUG_NORMAL_Z: + m_Data.iDebugNormalComponent = 2; + break; + default: + m_Data.iDebugNormalComponent = 3; + break; + } +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GlobalConstants::SetDepthData(const GFSDK::SSAO::InputDepthInfo& InputDepth) +{ + SetDepthLinearizationConstants(InputDepth); + SetViewportConstants(InputDepth); + SetProjectionConstants(InputDepth); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GlobalConstants::SetResolutionConstants(const GFSDK::SSAO::Viewports &Viewports) +{ + m_Data.f2InvFullResolution.X = 1.f / Viewports.FullRes.Width; + m_Data.f2InvFullResolution.Y = 1.f / Viewports.FullRes.Height; + m_Data.f2InvQuarterResolution.X = 1.f / Viewports.QuarterRes.Width; + m_Data.f2InvQuarterResolution.Y = 1.f / Viewports.QuarterRes.Height; +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GlobalConstants::SetProjectionConstants(const GFSDK::SSAO::InputDepthInfo& InputDepth) +{ + const float InvFocalLenX = InputDepth.ProjectionMatrixInfo.GetTanHalfFovX(); + const float InvFocalLenY = InputDepth.ProjectionMatrixInfo.GetTanHalfFovY(); + m_Data.f2UVToViewA.X = 2.f * InvFocalLenX; + m_Data.f2UVToViewA.Y = -2.f * InvFocalLenY; + m_Data.f2UVToViewB.X = -1.f * InvFocalLenX; + m_Data.f2UVToViewB.Y = 1.f * InvFocalLenY; +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GlobalConstants::SetViewportConstants(const GFSDK::SSAO::InputDepthInfo& InputDepth) +{ + // In Shaders/Src/LinearizeDepth_Common.hlsl: + // float NormalizedDepth = saturate(g_fInverseDepthRangeA * HardwareDepth + g_fInverseDepthRangeB); + + if (InputDepth.DepthTextureType == GFSDK_SSAO_HARDWARE_DEPTHS_SUB_RANGE) + { + // Inverse viewport depth range from [MinZ,MaxZ] to [0,1] + // Z = (HardwareZ - MinZ) / (MaxZ - MinZ) + const float MinZ = InputDepth.Viewport.MinDepth; + const float MaxZ = InputDepth.Viewport.MaxDepth; + m_Data.fInverseDepthRangeA = 1.f / (MaxZ - MinZ); + m_Data.fInverseDepthRangeB = -MinZ * m_Data.fInverseDepthRangeA; + } + else + { + m_Data.fInverseDepthRangeA = 1.f; + m_Data.fInverseDepthRangeB = 0.f; + } + + m_Data.f2InputViewportTopLeft.X = InputDepth.Viewport.TopLeftX; + m_Data.f2InputViewportTopLeft.Y = InputDepth.Viewport.TopLeftY; +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GlobalConstants::SetDepthLinearizationConstants(const GFSDK::SSAO::InputDepthInfo& InputDepth) +{ + // In Shaders/Src/LinearizeDepth_Common.hlsl: + // float ViewDepth = 1.0 / (NormalizedDepth * g_fLinearizeDepthA + g_fLinearizeDepthB); + + // Inverse projection from [0,1] to [ZNear,ZFar] + // W = 1 / [(1/ZFar - 1/ZNear) * Z + 1/ZNear] + const float InverseZNear = InputDepth.ProjectionMatrixInfo.GetInverseZNear(); + const float InverseZFar = InputDepth.ProjectionMatrixInfo.GetInverseZFar(); + m_Data.fLinearizeDepthA = InverseZFar - InverseZNear; + m_Data.fLinearizeDepthB = InverseZNear; + + ASSERT((0.f * m_Data.fLinearizeDepthA + m_Data.fLinearizeDepthB) != 0.f); + ASSERT((1.f * m_Data.fLinearizeDepthA + m_Data.fLinearizeDepthB) != 0.f); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GlobalConstants::SetNormalData(const GFSDK_SSAO_InputNormalData& NormalData) +{ + MatrixView WorldToView(NormalData.WorldToViewMatrix); + + for (UINT Row = 0; Row < 3; ++Row) + { + for (UINT Col = 0; Col < 3; ++Col) + { + m_Data.f44NormalMatrix.Data[Row * 4 + Col] = WorldToView(Row, Col); + } + } + + m_Data.fNormalDecodeScale = NormalData.DecodeScale; + m_Data.fNormalDecodeBias = NormalData.DecodeBias; +} diff --git a/src/ConstantBuffers.h b/src/ConstantBuffers.h new file mode 100644 index 0000000..7fd9955 --- /dev/null +++ b/src/ConstantBuffers.h @@ -0,0 +1,496 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#pragma once +#include "Viewports.h" +#include "InputDepthInfo.h" +#include "MathUtil.h" +#include "RandomTexture.h" +#include "shaders/src/ConstantBuffers.hlsl" + +namespace GFSDK +{ +namespace SSAO +{ + +//-------------------------------------------------------------------------------- +class GlobalConstants +{ +public: + GlobalConstants() + { + ZERO_STRUCT(m_Data); + m_Data.iTrue = 1; + + // Can be useful for figuring out the HBAO+ version from an APIC or NSight capture + m_Data.u4BuildVersion = GFSDK_SSAO_Version(); + } + + void SetAOParameters(const GFSDK_SSAO_Parameters& Params, const InputDepthInfo& InputDepth); + void SetRenderMask(GFSDK_SSAO_RenderMask RenderMask); + void SetDepthData(const InputDepthInfo& InputDepth); + void SetResolutionConstants(const SSAO::Viewports &Viewports); + void SetNormalData(const GFSDK_SSAO_InputNormalData& NormalData); + +protected: + GlobalConstantBuffer m_Data; + + void SetDepthLinearizationConstants(const InputDepthInfo& InputDepth); + void SetProjectionConstants(const InputDepthInfo& InputDepth); + void SetViewportConstants(const InputDepthInfo& InputDepth); + + void SetBlurConstants(const GFSDK_SSAO_BlurParameters& Params, const InputDepthInfo& InputDepth); + void SetAORadiusConstants(const GFSDK_SSAO_Parameters& Params, const InputDepthInfo& InputDepth); + void SetDepthThresholdConstants(const GFSDK_SSAO_DepthThreshold& Params); +}; + +//-------------------------------------------------------------------------------- +class PerPassConstants +{ +public: + PerPassConstants() + { + ZERO_STRUCT(m_Data); + } + + void SetOffset(UINT OffsetX, UINT OffsetY) + { + m_Data.PerPassConstants.f2Offset.X = float(OffsetX) + 0.5f; + m_Data.PerPassConstants.f2Offset.Y = float(OffsetY) + 0.5f; + } + + void SetJitter(float4 Jitter) + { + m_Data.PerPassConstants.f4Jitter = Jitter; + } + + void SetSliceIndex(UINT SliceIndex) + { + m_Data.PerPassConstants.fSliceIndex = float(SliceIndex); + m_Data.PerPassConstants.uSliceIndex = SliceIndex; + } + +protected: + PerPassConstantBuffer m_Data; +}; + +//-------------------------------------------------------------------------------- +#if SUPPORT_D3D11 +namespace D3D11 +{ + +class BaseConstantBuffer +{ +public: + BaseConstantBuffer(UINT ByteWidth) + : m_ByteWidth(ByteWidth) + , m_pConstantBuffer(NULL) + { + } + + void Create(ID3D11Device* pD3DDevice, D3D11_SUBRESOURCE_DATA* pSubresourceData = NULL) + { + D3D11_BUFFER_DESC BufferDesc = + { + m_ByteWidth, //ByteWidth + D3D11_USAGE_DEFAULT, //Usage + D3D11_BIND_CONSTANT_BUFFER, //BindFlags + 0, //CPUAccessFlags + 0 //MiscFlags + }; + + // The D3D11 runtime requires constant buffer sizes to be multiple of 16 bytes + ASSERT(BufferDesc.ByteWidth % 16 == 0); + + ASSERT(!m_pConstantBuffer); + SAFE_D3D_CALL( pD3DDevice->CreateBuffer(&BufferDesc, pSubresourceData, &m_pConstantBuffer) ); + } + + void Release() + { + SAFE_RELEASE(m_pConstantBuffer); + } + + void UpdateCB(ID3D11DeviceContext* pDeviceContext, void* pData) + { + ASSERT(m_pConstantBuffer); + + pDeviceContext->UpdateSubresource(m_pConstantBuffer, 0, NULL, pData, 0, 0); + } + + ID3D11Buffer*& GetCB() + { + return m_pConstantBuffer; + } + +protected: + UINT m_ByteWidth; + ID3D11Buffer *m_pConstantBuffer; +}; + +//-------------------------------------------------------------------------------- +class GlobalConstantBuffer : public GlobalConstants, public D3D11::BaseConstantBuffer +{ +public: + GlobalConstantBuffer() + : GlobalConstants() + , D3D11::BaseConstantBuffer(sizeof(m_Data)) + { + } + void UpdateBuffer(ID3D11DeviceContext* pDeviceContext, GFSDK_SSAO_RenderMask RenderMask) + { + SetRenderMask(RenderMask); + UpdateCB(pDeviceContext, &m_Data); + } +}; + +//-------------------------------------------------------------------------------- +class PerPassConstantBuffer : public PerPassConstants, public D3D11::BaseConstantBuffer +{ +public: + PerPassConstantBuffer() + : PerPassConstants() + , D3D11::BaseConstantBuffer(sizeof(m_Data)) + { + } + void Create(ID3D11Device* pD3DDevice) + { + D3D11_SUBRESOURCE_DATA SubresourceData = { &m_Data }; + D3D11::BaseConstantBuffer::Create(pD3DDevice, &SubresourceData); + } +}; + +//-------------------------------------------------------------------------------- +class PerPassConstantBuffers +{ +public: + void Create(ID3D11Device* pD3DDevice) + { + for (UINT SliceIndex = 0; SliceIndex < SIZEOF_ARRAY(m_CBs); ++SliceIndex) + { + m_CBs[SliceIndex].SetOffset(SliceIndex % 4, SliceIndex / 4); + m_CBs[SliceIndex].SetJitter(m_RandomTexture.GetJitter(SliceIndex)); + m_CBs[SliceIndex].SetSliceIndex(SliceIndex); + m_CBs[SliceIndex].Create(pD3DDevice); + } + } + void Release() + { + for (UINT PassIndex = 0; PassIndex < SIZEOF_ARRAY(m_CBs); ++PassIndex) + { + m_CBs[PassIndex].Release(); + } + } + ID3D11Buffer*& GetCB(UINT PassIndex) + { + ASSERT(PassIndex < SIZEOF_ARRAY(m_CBs)); + return m_CBs[PassIndex].GetCB(); + } + +private: + PerPassConstantBuffer m_CBs[16]; + GFSDK::SSAO::RandomTexture m_RandomTexture; +}; + +} // namespace D3D11 +#endif // SUPPORT_D3D11 + +//-------------------------------------------------------------------------------- +#if SUPPORT_D3D12 +namespace D3D12 +{ + +//-------------------------------------------------------------------------------- +struct GFSDK_D3D12_ConstantBufferView +{ + ID3D12Resource* pResource; + D3D12_CONSTANT_BUFFER_VIEW_DESC Desc; + D3D12_CPU_DESCRIPTOR_HANDLE CpuHandle; +}; + +//-------------------------------------------------------------------------------- +class BaseConstantBuffer +{ +public: + BaseConstantBuffer(UINT ByteWidth) + : m_ByteWidth(ByteWidth) + { + } + + void Create(GFSDK_D3D12_GraphicsContext* pContext, CBVSRVUAVLayoutBase Base, UINT BaseOffset) + { + ASSERT(!m_pConstantBuffer.pResource); + + // CB size is required to be 256-byte aligned. + const UINT AlignedByteWidth = ALIGNED_SIZE(m_ByteWidth, D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT); + + THROW_IF_FAILED(pContext->pDevice->CreateCommittedResource( + &CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_UPLOAD, pContext->NodeMask, pContext->NodeMask), + D3D12_HEAP_FLAG_NONE, + &CD3DX12_RESOURCE_DESC::Buffer(AlignedByteWidth), + D3D12_RESOURCE_STATE_GENERIC_READ, + nullptr, + IID_PPV_ARGS(&m_pConstantBuffer.pResource))); + + D3D12_CONSTANT_BUFFER_VIEW_DESC cbvDesc = {}; + cbvDesc.BufferLocation = m_pConstantBuffer.pResource->GetGPUVirtualAddress(); + cbvDesc.SizeInBytes = AlignedByteWidth; + + m_pConstantBuffer.CpuHandle = pContext->DescHeaps.CBVSRVUAV.GetCPUHandle((UINT)Base + BaseOffset); + pContext->pDevice->CreateConstantBufferView(&cbvDesc, m_pConstantBuffer.CpuHandle); + + m_pConstantBuffer.pResource->Map(0, nullptr, reinterpret_cast(&mCBUploadPtr)); + } + + void Release() + { + if (m_pConstantBuffer.pResource) + { + m_pConstantBuffer.pResource->Unmap(0, nullptr); + SAFE_RELEASE(m_pConstantBuffer.pResource); + } + } + + void UpdateCB(GFSDK_D3D12_GraphicsContext* pGraphicsContext, void* pData) + { + memcpy(mCBUploadPtr, pData, m_ByteWidth); + } + + GFSDK_D3D12_ConstantBufferView m_pConstantBuffer; + +protected: + UINT m_ByteWidth; + void* mCBUploadPtr; +}; + +//-------------------------------------------------------------------------------- +class GlobalConstantBuffer : public GlobalConstants, public D3D12::BaseConstantBuffer +{ +public: + GlobalConstantBuffer() + : GlobalConstants() + , D3D12::BaseConstantBuffer(sizeof(m_Data)) + { + } + void UpdateBuffer(GFSDK_D3D12_GraphicsContext* pGraphicsContext, GFSDK_SSAO_RenderMask RenderMask) + { + SetRenderMask(RenderMask); + UpdateCB(pGraphicsContext, &m_Data); + } +}; + +//-------------------------------------------------------------------------------- +class PerPassConstantBuffer : public PerPassConstants, public D3D12::BaseConstantBuffer +{ +public: + PerPassConstantBuffer() + : PerPassConstants() + , D3D12::BaseConstantBuffer(sizeof(m_Data)) + { + } + void UpdateBuffer(GFSDK_D3D12_GraphicsContext* pGraphicsContext) + { + UpdateCB(pGraphicsContext, &m_Data); + } +}; + +//-------------------------------------------------------------------------------- +class PerPassConstantBuffers +{ +public: + void Create(GFSDK_D3D12_GraphicsContext* pD3DDevice, CBVSRVUAVLayoutBase Base) + { + for (UINT SliceIndex = 0; SliceIndex < SIZEOF_ARRAY(m_CBs); ++SliceIndex) + { + m_CBs[SliceIndex].SetOffset(SliceIndex % 4, SliceIndex / 4); + m_CBs[SliceIndex].SetJitter(m_RandomTexture.GetJitter(SliceIndex)); + m_CBs[SliceIndex].SetSliceIndex(SliceIndex); + + m_CBs[SliceIndex].Create(pD3DDevice, Base, SliceIndex); + m_CBs[SliceIndex].UpdateBuffer(pD3DDevice); + } + } + void Release() + { + for (UINT PassIndex = 0; PassIndex < SIZEOF_ARRAY(m_CBs); ++PassIndex) + { + m_CBs[PassIndex].Release(); + } + } + +private: + PerPassConstantBuffer m_CBs[16]; + GFSDK::SSAO::RandomTexture m_RandomTexture; +}; + +} // namespace D3D12 +#endif // SUPPORT_D3D12 + +#if SUPPORT_GL +namespace GL +{ + +class BaseConstantBuffer +{ +public: + BaseConstantBuffer(UINT ByteWidth, GLuint BindingPoint) + : m_ByteWidth(ByteWidth) + , m_BufferId(0) + , m_BindingPoint(BindingPoint) + { + } + + void Create(const GFSDK_SSAO_GLFunctions& GL) + { + ASSERT(!m_BufferId); + GL.glGenBuffers(1, &m_BufferId); + + GL.glBindBuffer(GL_UNIFORM_BUFFER, m_BufferId); + GL.glBufferData(GL_UNIFORM_BUFFER, m_ByteWidth, NULL, GL_DYNAMIC_DRAW); + GL.glBindBuffer(GL_UNIFORM_BUFFER, 0); + ASSERT_GL_ERROR(GL); + } + + void Release(const GFSDK_SSAO_GLFunctions& GL) + { + GL.glDeleteBuffers(1, &m_BufferId); + m_BufferId = 0; + } + + void Unbind(const GFSDK_SSAO_GLFunctions& GL) + { + GL.glBindBufferBase(GL_UNIFORM_BUFFER, m_BindingPoint, 0); + ASSERT_GL_ERROR(GL); + } + + void UpdateCB(const GFSDK_SSAO_GLFunctions& GL, void* pData) + { + ASSERT(m_BufferId); + + GL.glBindBufferBase(GL_UNIFORM_BUFFER, m_BindingPoint, m_BufferId); + ASSERT_GL_ERROR(GL); + + // Do not use glMapBuffer for updating constant buffers (slow path on GL). + // glBufferSubData has a fast path for UBO. + GL.glBufferSubData(GL_UNIFORM_BUFFER, 0, m_ByteWidth, pData); + ASSERT_GL_ERROR(GL); + } + + GLuint GetBindingPoint() + { + return m_BindingPoint; + } + + GLuint GetBufferId() + { + return m_BufferId; + } + + enum BindingPoints + { + BINDING_POINT_GLOBAL_UBO = 0, + BINDING_POINT_NORMAL_UBO = 1, + BINDING_POINT_PER_PASS_UBO = 2, + }; + +protected: + UINT m_ByteWidth; + GLuint m_BufferId; + GLuint m_BindingPoint; +}; + +//-------------------------------------------------------------------------------- +class GlobalConstantBuffer : public GlobalConstants, public GL::BaseConstantBuffer +{ +public: + GlobalConstantBuffer() + : GlobalConstants() + , GL::BaseConstantBuffer(sizeof(m_Data), BINDING_POINT_GLOBAL_UBO) + { + } + void UpdateBuffer(const GFSDK_SSAO_GLFunctions& GL, GFSDK_SSAO_RenderMask RenderMask) + { + SetRenderMask(RenderMask); + UpdateCB(GL, &m_Data); + } +}; + +//-------------------------------------------------------------------------------- +class PerPassConstantBuffer : public PerPassConstants, public GL::BaseConstantBuffer +{ +public: + PerPassConstantBuffer() + : PerPassConstants() + , GL::BaseConstantBuffer(sizeof(m_Data), BINDING_POINT_PER_PASS_UBO) + { + } + void UpdateBuffer(const GFSDK_SSAO_GLFunctions& GL) + { + UpdateCB(GL, &m_Data); + } +}; + +//-------------------------------------------------------------------------------- +class PerPassConstantBuffers +{ +public: + void Create(const GFSDK_SSAO_GLFunctions& GL) + { + for (UINT SliceIndex = 0; SliceIndex < SIZEOF_ARRAY(m_CBs); ++SliceIndex) + { + m_CBs[SliceIndex].Create(GL); + + UINT JitterX = SliceIndex % 4; + UINT JitterY = SliceIndex / 4; + + m_CBs[SliceIndex].SetOffset(JitterX, JitterY); + m_CBs[SliceIndex].SetJitter(GetJitterVector(JitterX, JitterY)); + m_CBs[SliceIndex].SetSliceIndex(SliceIndex); + m_CBs[SliceIndex].UpdateBuffer(GL); + } + } + void Release(const GFSDK_SSAO_GLFunctions& GL) + { + for (UINT PassIndex = 0; PassIndex < SIZEOF_ARRAY(m_CBs); ++PassIndex) + { + m_CBs[PassIndex].Release(GL); + } + } + GLuint GetBufferId(UINT PassIndex) + { + ASSERT(PassIndex < SIZEOF_ARRAY(m_CBs)); + return m_CBs[PassIndex].GetBufferId(); + } + GLuint GetBindingPoint() + { + return m_CBs[0].GetBindingPoint(); + } + void Unbind(const GFSDK_SSAO_GLFunctions& GL) + { + m_CBs[0].Unbind(GL); + } + +private: + float4 GetJitterVector(UINT JitterX, UINT JitterY) + { + // To match the reference D3D11 implementation + JitterY = 3 - JitterY; + return m_RandomTexture.GetJitter(JitterY * 4 + JitterX); + } + + PerPassConstantBuffer m_CBs[16]; + GFSDK::SSAO::RandomTexture m_RandomTexture; +}; + +} // namespace GL +#endif // SUPPORT_GL + +} // namespace SSAO +} // namespace GFSDK diff --git a/src/GLSLProgram.h b/src/GLSLProgram.h new file mode 100644 index 0000000..7641707 --- /dev/null +++ b/src/GLSLProgram.h @@ -0,0 +1,233 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#pragma once +#include "Common.h" +#include "ConstantBuffers.h" + +#if _DEBUG +#include +#endif + +#define GLSL_VERSION_150\ + (char *)"#version 150\n" + +#define GLSL_VERSION_300ES\ + (char *)"#version 300 es\n#extension GL_EXT_geometry_shader : enable\n" + +namespace GFSDK +{ +namespace SSAO +{ +namespace GL +{ + +//-------------------------------------------------------------------------- +class GLSLProgram +{ +public: + GLSLProgram() + : m_Program(0) + , m_VS(0) + , m_GS(0) + , m_FS(0) + { + } + + void Create(const GFSDK_SSAO_GLFunctions& GL, const char *pVertexShaderGLSL, const char *pFragmentShaderGLSL) + { + m_Program = CompileProgram(GL, pVertexShaderGLSL, pFragmentShaderGLSL); + } + + void Create(const GFSDK_SSAO_GLFunctions& GL, const char *pVertexShaderGLSL, const char *pGeometryShaderGLSL, const char *pFragmentShaderGLSL) + { + m_Program = CompileProgram(GL, pVertexShaderGLSL, pGeometryShaderGLSL, pFragmentShaderGLSL); + } + + static void DeleteShader(const GFSDK_SSAO_GLFunctions& GL, GLuint& Shader) + { + if (Shader) + { + GL.glDeleteShader(Shader); + Shader = 0; + } + } + + static void DeleteProgram(const GFSDK_SSAO_GLFunctions& GL, GLuint& Program) + { + if (Program) + { + GL.glDeleteProgram(Program); + Program = 0; + } + } + + void Release(const GFSDK_SSAO_GLFunctions& GL) + { + DeleteShader(GL, m_VS); + DeleteShader(GL, m_GS); + DeleteShader(GL, m_FS); + DeleteProgram(GL, m_Program); + } + + void Enable(const GFSDK_SSAO_GLFunctions& GL) + { + GL.glUseProgram(m_Program); + } + +protected: + static void CheckCompileError(const GFSDK_SSAO_GLFunctions& GL, GLuint Shader) + { + GLint Compiled = 0; + GL.glGetShaderiv(Shader, GL_COMPILE_STATUS, &Compiled); + ASSERT_GL_ERROR(GL); + +#if _DEBUG + char temp[1024]; + GL.glGetShaderInfoLog(Shader, sizeof(temp), 0, temp); + if (!Compiled || strstr(temp, "deprecated")) + { + fprintf(stderr, "%s\n", temp); + ASSERT(0); + } +#endif + + THROW_IF(!Compiled); + } + + static void CheckLinkError(const GFSDK_SSAO_GLFunctions& GL, GLuint Program) + { + GLint Linked = 0; + GL.glGetProgramiv(Program, GL_LINK_STATUS, &Linked); + ASSERT_GL_ERROR(GL); + +#if _DEBUG + char temp[1024]; + GL.glGetProgramInfoLog(Program, sizeof(temp), 0, temp); + if (!Linked || strstr(temp, "deprecated")) + { + fprintf(stderr, "%s\n", temp); + ASSERT(0); + } +#endif + + THROW_IF(!Linked); + } + + static GLuint AttachShader(const GFSDK_SSAO_GLFunctions& GL, GLuint Program, GLenum ShaderType, const char *ShaderSource) + { + GLuint Shader = GL.glCreateShader(ShaderType); + + const GLchar *VersionDirective = "#version"; + if (!strncmp(ShaderSource, VersionDirective, strlen(VersionDirective))) + { + GL.glShaderSource(Shader, 1, &ShaderSource, 0); + } + else + { +#if USE_GLES + const GLchar* ShaderVersion = GLSL_VERSION_300ES; +#else + const GLchar* ShaderVersion = GLSL_VERSION_150; +#endif + const GLchar* Strings[] = { ShaderVersion, ShaderSource }; + GL.glShaderSource(Shader, SIZEOF_ARRAY(Strings), Strings, 0); + } + + GL.glCompileShader(Shader); + CheckCompileError(GL, Shader); + + GL.glAttachShader(Program, Shader); + + return Shader; + } + + GLuint CompileProgram(const GFSDK_SSAO_GLFunctions& GL, const char *pVertexShaderGLSL, const char *pFragmentShaderGLSL) + { + GLuint Program = GL.glCreateProgram(); + m_VS = AttachShader(GL, Program, GL_VERTEX_SHADER, pVertexShaderGLSL); + m_FS = AttachShader(GL, Program, GL_FRAGMENT_SHADER, pFragmentShaderGLSL); + + for (GLuint ColorIndex = 0; ColorIndex < 8; ++ColorIndex) + { + char VariableName[32]; + snprintf(VariableName, sizeof(VariableName), "PixOutput%d", ColorIndex); + GL.glBindFragDataLocation(Program, ColorIndex, VariableName); + ASSERT_GL_ERROR(GL); + } + + GL.glLinkProgram(Program); + CheckLinkError(GL, Program); + + return Program; + } + + GLuint CompileProgram(const GFSDK_SSAO_GLFunctions& GL, const char *pVertexShaderGLSL, const char* pGeometryShaderGLSL, const char *pFragmentShaderGLSL) + { + GLuint Program = GL.glCreateProgram(); + m_VS = AttachShader(GL, Program, GL_VERTEX_SHADER, pVertexShaderGLSL); + m_GS = AttachShader(GL, Program, GL_GEOMETRY_SHADER, pGeometryShaderGLSL); + m_FS = AttachShader(GL, Program, GL_FRAGMENT_SHADER, pFragmentShaderGLSL); + + GL.glLinkProgram(Program); + CheckLinkError(GL, Program); + + return Program; + } + + GLint GetUniformLocation(const GFSDK_SSAO_GLFunctions& GL, const char* pUniform) + { + GLint Result = GL.glGetUniformLocation(m_Program, pUniform); + return Result; + } + + GLuint GetUniformBlockIndex(const GFSDK_SSAO_GLFunctions& GL, const char* UniformBlock) + { + GLuint Result = GL.glGetUniformBlockIndex(m_Program, UniformBlock); + return Result; + } + + void SetTexture(const GFSDK_SSAO_GLFunctions& GL, GLenum Target, GLint UniformLocation, GLint TexId, GLint TexUnit, GLint Filter = GL_NEAREST, GLint WrapMode = GL_CLAMP_TO_EDGE) + { + ASSERT(UniformLocation != -1); + + GL.glUseProgram(m_Program); + GL.glUniform1i(UniformLocation, TexUnit); + + GL.glActiveTexture(GL_TEXTURE0 + TexUnit); + GL.glBindTexture(Target, TexId); + + if (Target != GL_TEXTURE_2D_MULTISAMPLE) + { + GL.glTexParameteri(Target, GL_TEXTURE_MIN_FILTER, Filter); + GL.glTexParameteri(Target, GL_TEXTURE_MAG_FILTER, Filter); + GL.glTexParameteri(Target, GL_TEXTURE_WRAP_S, WrapMode); + GL.glTexParameteri(Target, GL_TEXTURE_WRAP_T, WrapMode); + } + + if (WrapMode == GL_CLAMP_TO_BORDER) + { + const GLfloat BorderColor[4] = { -FLT_MAX }; + GL.glTexParameterfv(Target, GL_TEXTURE_BORDER_COLOR, BorderColor); + } + + ASSERT_GL_ERROR(GL); + } + +protected: + GLuint m_Program; + GLuint m_VS; + GLuint m_GS; + GLuint m_FS; +}; + +} // namespace GL +} // namespace SSAO +} // namespace GFSDK diff --git a/src/InputDepthInfo.h b/src/InputDepthInfo.h new file mode 100644 index 0000000..3ac19fb --- /dev/null +++ b/src/InputDepthInfo.h @@ -0,0 +1,178 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#pragma once +#include "Common.h" +#include "ProjectionMatrixInfo.h" +#include "UserTexture.h" +#include "InputViewport.h" +#include "TextureUtil.h" + +namespace GFSDK +{ +namespace SSAO +{ + +//-------------------------------------------------------------------------------- +struct InputDepthInfo +{ + InputDepthInfo() + : DepthTextureType(GFSDK_SSAO_HARDWARE_DEPTHS) + , MetersToViewSpaceUnits(0.f) + { + } + + GFSDK_SSAO_DepthTextureType DepthTextureType; + FLOAT MetersToViewSpaceUnits; + SSAO::ProjectionMatrixInfo ProjectionMatrixInfo; + SSAO::InputViewport Viewport; +}; + +//-------------------------------------------------------------------------------- +#if SUPPORT_D3D11 +namespace D3D11 +{ + +struct InputDepthInfo : SSAO::InputDepthInfo +{ + InputDepthInfo() + : SSAO::InputDepthInfo() + { + } + + GFSDK_SSAO_Status SetData(const GFSDK_SSAO_InputDepthData_D3D11& DepthData) + { + GFSDK_SSAO_Status Status; + + Status = ProjectionMatrixInfo.Init(DepthData.ProjectionMatrix, API_D3D11); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + Status = Texture.Init(DepthData.pFullResDepthTextureSRV); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + Status = Viewport.Init(DepthData.Viewport, Texture); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + DepthTextureType = DepthData.DepthTextureType; + MetersToViewSpaceUnits = Max(DepthData.MetersToViewSpaceUnits, 0.f); + + return GFSDK_SSAO_OK; + } + + SSAO::D3D11::UserTextureSRV Texture; +}; + +} // namespace D3D11 +#endif // SUPPORT_D3D11 + +//-------------------------------------------------------------------------------- +#if SUPPORT_D3D12 +namespace D3D12 +{ + +struct InputDepthInfo : SSAO::InputDepthInfo +{ + InputDepthInfo() + : SSAO::InputDepthInfo() + { + } + + GFSDK_SSAO_Status SetData(const GFSDK_SSAO_InputDepthData_D3D12& DepthData) + { + GFSDK_SSAO_Status Status; + + Status = ProjectionMatrixInfo.Init(DepthData.ProjectionMatrix, API_D3D11); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + Status = Texture.Init(&DepthData.FullResDepthTextureSRV); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + Status = Viewport.Init(DepthData.Viewport, Texture); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + DepthTextureType = DepthData.DepthTextureType; + MetersToViewSpaceUnits = Max(DepthData.MetersToViewSpaceUnits, 0.f); + + return GFSDK_SSAO_OK; + } + + SSAO::D3D12::UserTextureSRV Texture; +}; + +} // namespace D3D12 +#endif // SUPPORT_D3D12 + +//-------------------------------------------------------------------------------- +#if SUPPORT_GL +namespace GL +{ + +//-------------------------------------------------------------------------------- +struct InputDepthInfo : SSAO::InputDepthInfo +{ + InputDepthInfo() + : SSAO::InputDepthInfo() + { + } + + GFSDK_SSAO_Status SetData(const GFSDK_SSAO_GLFunctions& GL, const GFSDK_SSAO_InputDepthData_GL& DepthData) + { + GFSDK_SSAO_Status Status; + + Status = ProjectionMatrixInfo.Init(DepthData.ProjectionMatrix, API_GL); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + Status = Texture.Init(GL, DepthData.FullResDepthTexture); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + Status = Viewport.InitFromTexture(DepthData.Viewport, Texture); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + DepthTextureType = DepthData.DepthTextureType; + MetersToViewSpaceUnits = Max(DepthData.MetersToViewSpaceUnits, 0.f); + + return GFSDK_SSAO_OK; + } + + SSAO::GL::UserTexture Texture; +}; + +} // namespace GL +#endif // SUPPORT_GL + +} // namespace SSAO +} // namespace GFSDK diff --git a/src/InputNormalInfo.h b/src/InputNormalInfo.h new file mode 100644 index 0000000..28dcf87 --- /dev/null +++ b/src/InputNormalInfo.h @@ -0,0 +1,129 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#pragma once +#include "Common.h" +#include "MatrixView.h" +#include "TextureUtil.h" +#include "UserTexture.h" + +namespace GFSDK +{ +namespace SSAO +{ + +//-------------------------------------------------------------------------------- +class WorldToViewMatrix +{ +public: + static bool IsValid(const GFSDK_SSAO_Matrix& WorldToViewMatrix) + { + MatrixView m(WorldToViewMatrix); + + // Necessary condition for the matrix to be a valid LookAt matrix + // Note: the matrix may contain a uniform scaling, so we do not check m(3,3) + return (m(0,3) == 0.f && + m(1,3) == 0.f && + m(2,3) == 0.f); + } +}; + +//-------------------------------------------------------------------------------- +#if SUPPORT_D3D11 +namespace D3D11 +{ + +struct InputNormalInfo +{ + GFSDK_SSAO_Status SetData(const GFSDK_SSAO_InputNormalData_D3D11& NormalData) + { + if (!NormalData.pFullResNormalTextureSRV) + { + return GFSDK_SSAO_NULL_ARGUMENT; + } + + if (!GFSDK::SSAO::WorldToViewMatrix::IsValid(NormalData.WorldToViewMatrix)) + { + return GFSDK_SSAO_INVALID_WORLD_TO_VIEW_MATRIX; + } + + Texture.Init(NormalData.pFullResNormalTextureSRV); + + return GFSDK_SSAO_OK; + } + + SSAO::D3D11::UserTextureSRV Texture; +}; + +} // namespace D3D11 +#endif + +//-------------------------------------------------------------------------------- +#if SUPPORT_D3D12 +namespace D3D12 +{ + +struct InputNormalInfo +{ + GFSDK_SSAO_Status SetData(const GFSDK_SSAO_InputNormalData_D3D12& NormalData) + { + if (!NormalData.FullResNormalTextureSRV.pResource) + { + return GFSDK_SSAO_NULL_ARGUMENT; + } + + if (!GFSDK::SSAO::WorldToViewMatrix::IsValid(NormalData.WorldToViewMatrix)) + { + return GFSDK_SSAO_INVALID_WORLD_TO_VIEW_MATRIX; + } + + Texture.Init(&NormalData.FullResNormalTextureSRV); + + return GFSDK_SSAO_OK; + } + + SSAO::D3D12::UserTextureSRV Texture; +}; + +} // namespace D3D12 +#endif + +//-------------------------------------------------------------------------------- +#if SUPPORT_GL +namespace GL +{ + +struct InputNormalInfo +{ + GFSDK_SSAO_Status SetData(const GFSDK_SSAO_GLFunctions& GL, const GFSDK_SSAO_InputNormalData_GL& NormalData) + { + if (!GFSDK::SSAO::GL::TextureUtil::HasValidTextureTarget(NormalData.FullResNormalTexture)) + { + return GFSDK_SSAO_GL_INVALID_TEXTURE_TARGET; + } + + if (!GFSDK::SSAO::WorldToViewMatrix::IsValid(NormalData.WorldToViewMatrix)) + { + return GFSDK_SSAO_INVALID_WORLD_TO_VIEW_MATRIX; + } + + Texture.Init(GL, NormalData.FullResNormalTexture); + + return GFSDK_SSAO_OK; + } + + SSAO::GL::UserTexture Texture; +}; + +} // namespace GL +#endif // SUPPORT_GL + +} // namespace SSAO +} // namespace GFSDK diff --git a/src/InputViewport.h b/src/InputViewport.h new file mode 100644 index 0000000..0f80a44 --- /dev/null +++ b/src/InputViewport.h @@ -0,0 +1,131 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#pragma once +#include "Common.h" +#include "UserTexture.h" + +namespace GFSDK +{ +namespace SSAO +{ + +#if !SUPPORT_D3D11 +struct D3D11_VIEWPORT +{ + FLOAT TopLeftX; + FLOAT TopLeftY; + FLOAT Width; + FLOAT Height; + FLOAT MinDepth; + FLOAT MaxDepth; +}; +#endif + +#if SUPPORT_D3D12 +struct InputViewport : public D3D12_VIEWPORT +#else +struct InputViewport : public D3D11_VIEWPORT +#endif +{ + InputViewport() + { + ZERO_STRUCT(*this); + } + + static bool HasValidDimensions(const GFSDK_SSAO_InputViewport& V) + { + return (V.Width != 0 && V.Height != 0); + } + + static bool HasValidDepthRange(const GFSDK_SSAO_InputViewport& V) + { + // According to the DX11 spec: + // Viewport MinDepth and MaxDepth must both be in the range [0.0f...1.0f], and MinDepth must be less-than or equal-to MaxDepth. + // Viewport parameters are validated in the runtime such that values outside these ranges will never be passed to the DDI. + return (V.MinDepth >= 0.f && V.MinDepth <= 1.f && + V.MaxDepth >= 0.f && V.MaxDepth <= 1.f && + V.MinDepth <= V.MaxDepth); + } + + static bool CoversFullTexture(const GFSDK_SSAO_InputViewport& V, const SSAO::UserTextureDesc& Texture) + { + return (V.TopLeftX == 0.f && + V.TopLeftY == 0.f && + V.Width == (FLOAT)Texture.Width && + V.Height == (FLOAT)Texture.Height); + } + + GFSDK_SSAO_Status Init(const GFSDK_SSAO_InputViewport& Viewport, const SSAO::UserTextureDesc& Texture) + { + if (!Viewport.Enable) + { + return InitFromTexture(Texture); + } + + return InitFromViewport(Viewport, Texture); + } + + GFSDK_SSAO_Status InitFromTexture(const GFSDK_SSAO_InputViewport& Viewport, const SSAO::UserTextureDesc& Texture) + { + if (Viewport.Enable) + { + return GFSDK_SSAO_GL_UNSUPPORTED_VIEWPORT; + } + + return InitFromTexture(Texture); + } + + bool RectCoversFullInputTexture; + +private: + GFSDK_SSAO_Status InitFromTexture(const SSAO::UserTextureDesc& Texture) + { + TopLeftX = 0.f; + TopLeftY = 0.f; + Width = FLOAT(Texture.Width); + Height = FLOAT(Texture.Height); + MinDepth = 0.f; + MaxDepth = 1.f; + RectCoversFullInputTexture = true; + + return GFSDK_SSAO_OK; + } + + GFSDK_SSAO_Status InitFromViewport(const GFSDK_SSAO_InputViewport& Viewport, const SSAO::UserTextureDesc& Texture) + { + if (!HasValidDimensions(Viewport)) + { + return GFSDK_SSAO_INVALID_VIEWPORT_DIMENSIONS; + } + + if (!HasValidDepthRange(Viewport)) + { + return GFSDK_SSAO_INVALID_VIEWPORT_DEPTH_RANGE; + } + + TopLeftX = (FLOAT)Viewport.TopLeftX; + TopLeftY = (FLOAT)Viewport.TopLeftY; + Width = (FLOAT)Viewport.Width; + Height = (FLOAT)Viewport.Height; + MinDepth = Viewport.MinDepth; + MaxDepth = Viewport.MaxDepth; + + Width = Min(Width, FLOAT(Texture.Width) - TopLeftX); + Height = Min(Height, FLOAT(Texture.Height) - TopLeftY); + + RectCoversFullInputTexture = CoversFullTexture(Viewport, Texture); + + return GFSDK_SSAO_OK; + } +}; + +} // namespace SSAO +} // namespace GFSDK diff --git a/src/MathUtil.h b/src/MathUtil.h new file mode 100644 index 0000000..c540b04 --- /dev/null +++ b/src/MathUtil.h @@ -0,0 +1,83 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#pragma once + +#include +#include +#include + +//-------------------------------------------------------------------------------- +// Defines +//-------------------------------------------------------------------------------- +#undef min +#undef max + +#undef Min +#define Min(a,b) std::min(a,b) + +#undef Max +#define Max(a,b) std::max(a,b) + +#undef Clamp +#define Clamp(x,a,b) (Min(Max(x, a), b)) + +#undef iDivUp +#define iDivUp(a,b) ((a + b-1) / b) + +#undef D3DX_PI +#define D3DX_PI 3.141592654f + +#undef EPSILON +#define EPSILON 1.e-6f + +//-------------------------------------------------------------------------------- +// Types +//-------------------------------------------------------------------------------- +namespace GFSDK +{ +namespace SSAO +{ + +struct float2 +{ + float X,Y; +}; + +struct float3 +{ + float X,Y,Z; +}; + +struct float4 +{ + float X,Y,Z,W; +}; + +struct float4x4 +{ + float Data[4*4]; +}; + +struct uint4 +{ + GFSDK_SSAO_UINT X,Y,Z,W; + uint4() {} + uint4(const GFSDK_SSAO_Version& V) + { + X = V.Major; + Y = V.Minor; + Z = V.Branch; + W = V.Revision; + } +}; + +} // namespace SSAO +} // namespace GFSDK diff --git a/src/MatrixView.h b/src/MatrixView.h new file mode 100644 index 0000000..70ab223 --- /dev/null +++ b/src/MatrixView.h @@ -0,0 +1,47 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#pragma once +#include "Common.h" + +namespace GFSDK +{ +namespace SSAO +{ + +//-------------------------------------------------------------------------------- +class MatrixView +{ +public: + MatrixView(const GFSDK_SSAO_Matrix& Matrix) + { + m_pFloat4x4 = Matrix.Data.Array; + m_IsRowMajor = (Matrix.Layout == GFSDK_SSAO_ROW_MAJOR_ORDER); + } + + float operator() (UINT Row, UINT Col) const + { + ASSERT(Row < 4); + ASSERT(Col < 4); + + if (!m_IsRowMajor) + { + std::swap(Row, Col); + } + return m_pFloat4x4[Row * 4 + Col]; + } + +private: + const float* m_pFloat4x4; + bool m_IsRowMajor; +}; + +} // namespace SSAO +} // namespace GFSDK diff --git a/src/OutputInfo.h b/src/OutputInfo.h new file mode 100644 index 0000000..0cb769d --- /dev/null +++ b/src/OutputInfo.h @@ -0,0 +1,170 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#pragma once +#include "Common.h" +#include "UserTexture.h" + +namespace GFSDK +{ +namespace SSAO +{ + +#if SUPPORT_D3D11 +namespace D3D11 +{ + +//-------------------------------------------------------------------------------- +enum BlendPassEnumType +{ + BLEND_PASS_0, + BLEND_PASS_1, + BLEND_PASS_COUNT, +}; + +//-------------------------------------------------------------------------------- +struct OutputInfo +{ + GFSDK::SSAO::D3D11::UserTextureRTV RenderTarget; + GFSDK::SSAO::D3D11::UserTextureDSV DepthStencilBuffer; + + UINT BlendPassCount; + GFSDK_SSAO_BlendState_D3D11 Blend[BLEND_PASS_COUNT]; + GFSDK_SSAO_DepthStencilState_D3D11 DepthStencil[BLEND_PASS_COUNT]; + + OutputInfo() + { + ZERO_STRUCT(*this); + } + + GFSDK_SSAO_Status Init(const GFSDK_SSAO_Output_D3D11& Output) + { + GFSDK_SSAO_Status Status; + + Status = RenderTarget.Init(Output.pRenderTargetView); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + Status = InitBlendState(Output); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + return GFSDK_SSAO_OK; + } + + GFSDK_SSAO_Status InitBlendState(const GFSDK_SSAO_Output_D3D11& Output) + { + if (Output.TwoPassBlend.Enable) + { + return InitTwoPassBlend(Output.TwoPassBlend); + } + + return InitSinglePassBlend(Output.Blend); + } + +private: + GFSDK_SSAO_Status InitSinglePassBlend(const GFSDK_SSAO_BlendState_D3D11& BlendState) + { + BlendPassCount = 1; + Blend[BLEND_PASS_0] = BlendState; + + return GFSDK_SSAO_OK; + } + + GFSDK_SSAO_Status InitTwoPassBlend(const GFSDK_SSAO_TwoPassBlend_D3D11& TwoPassBlend) + { + GFSDK_SSAO_Status Status = DepthStencilBuffer.Init(TwoPassBlend.pDepthStencilView); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + BlendPassCount = 2; + Blend[BLEND_PASS_0] = TwoPassBlend.FirstPass.Blend; + Blend[BLEND_PASS_1] = TwoPassBlend.SecondPass.Blend; + DepthStencil[BLEND_PASS_0] = TwoPassBlend.FirstPass.DepthStencil; + DepthStencil[BLEND_PASS_1] = TwoPassBlend.SecondPass.DepthStencil; + + return GFSDK_SSAO_OK; + } +}; + +} // namespace D3D11 +#endif // SUPPORT_D3D11 + +#if SUPPORT_D3D12 +namespace D3D12 +{ + +//-------------------------------------------------------------------------------- +struct OutputInfo +{ + OutputInfo() + { + } + + GFSDK_SSAO_Status Init(const GFSDK_SSAO_Output_D3D12& Output) + { + GFSDK_SSAO_Status Status; + + Status = RenderTarget.Init(Output.pRenderTargetView); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + Blend = Output.Blend; + + return GFSDK_SSAO_OK; + } + + GFSDK::SSAO::D3D12::UserTextureRTV RenderTarget; + GFSDK_SSAO_BlendState_D3D12 Blend; +}; + +} // namespace D3D12 +#endif // SUPPORT_D3D12 + +//-------------------------------------------------------------------------------- +#if SUPPORT_GL +namespace GL +{ + +struct OutputInfo +{ + OutputInfo() + : FboId(0) + , SampleCount(0) + { + } + + GFSDK_SSAO_Status Init(const GFSDK_SSAO_Output_GL& Output) + { + FboId = Output.OutputFBO; + SampleCount = 1; + Blend = Output.Blend; + + return GFSDK_SSAO_OK; + } + + GLuint FboId; + UINT SampleCount; + GFSDK_SSAO_BlendState_GL Blend; +}; + +} // namespace GL +#endif // SUPPORT_GL + +} // namespace SSAO +} // namespace GFSDK diff --git a/src/PerfMarkers.h b/src/PerfMarkers.h new file mode 100644 index 0000000..2d129da --- /dev/null +++ b/src/PerfMarkers.h @@ -0,0 +1,88 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#if ENABLE_PERF_MARKERS + +#pragma once + +#if SUPPORT_D3D11 +#include +#pragma comment(lib, "d3d9.lib") +#endif + +#if SUPPORT_D3D12 +#include +#include +#endif + +namespace GFSDK +{ +namespace SSAO +{ + +//-------------------------------------------------------------------------------- +#if SUPPORT_D3D11 +namespace D3D11 +{ + +struct PerfMarkerScope +{ + PerfMarkerScope(const WCHAR* EventName) + { + D3DPERF_BeginEvent(0xff808080, EventName); + } + ~PerfMarkerScope() + { + D3DPERF_EndEvent(); + } +}; + +#define PERF_MARKER_SCOPE(NAME) PerfMarkerScope PerfMarker(NAME) + +} // namespace D3D11 +#endif //SUPPORT_D3D11 + +//-------------------------------------------------------------------------------- +#if SUPPORT_D3D12 +namespace D3D12 +{ + +struct PerfMarkerScope +{ + PerfMarkerScope() + : m_pCmdList(NULL) + { + } + PerfMarkerScope(ID3D12GraphicsCommandList* pCmdList, const WCHAR* EventName) + { + PIXBeginEvent(pCmdList, 0, EventName); + + m_pCmdList = pCmdList; + } + ~PerfMarkerScope() + { + PIXEndEvent(m_pCmdList); + + m_pCmdList = NULL; + } + +private: + ID3D12GraphicsCommandList* m_pCmdList; +}; + +#define PERF_MARKER_SCOPE(NAME) PerfMarkerScope PerfMarker(m_GraphicsContext.pCmdList, NAME) + +} // namespace D3D12 +#endif //SUPPORT_D3D12 + +} // namespace SSAO +} // namespace GFSDK + +#endif //ENABLE_PERF_MARKERS diff --git a/src/PipelineStateObjects_DX12.cpp b/src/PipelineStateObjects_DX12.cpp new file mode 100644 index 0000000..f2abe71 --- /dev/null +++ b/src/PipelineStateObjects_DX12.cpp @@ -0,0 +1,621 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#if SUPPORT_D3D12 + +#include "PipelineStateObjects_DX12.h" + +//-------------------------------------------------------------------------------- +#if _DEBUG +#define SET_PSO_DEBUG_NAME(Name) \ + m_##Name.pPSO->SetName(L#Name); +#define SET_RS_DEBUG_NAME(Name) \ + m_##Name->SetName(L#Name); +#else +#define SET_PSO_DEBUG_NAME(Name) +#define SET_RS_DEBUG_NAME(Name) +#endif + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::LinearDepthPSO::Create(GFSDK_D3D12_GraphicsContext* pGraphicsContext) +{ + ASSERT(!m_LinearDepthRS); + + CD3DX12_DESCRIPTOR_RANGE DescRanges[RootParameters::Count]; + DescRanges[RootParameters::Buffer0] = CD3DX12_DESCRIPTOR_RANGE(D3D12_DESCRIPTOR_RANGE_TYPE_CBV, 1, 0); + DescRanges[RootParameters::Texture0] = CD3DX12_DESCRIPTOR_RANGE(D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 1, 0); + + CD3DX12_ROOT_PARAMETER RootParams[RootParameters::Count]; + for (UINT ParamIndex = 0; ParamIndex < SIZEOF_ARRAY(RootParams); ++ParamIndex) + { + RootParams[ParamIndex].InitAsDescriptorTable(1, &DescRanges[ParamIndex], D3D12_SHADER_VISIBILITY_PIXEL); + } + + D3D12_ROOT_SIGNATURE_DESC Desc = {}; + Desc.NumParameters = SIZEOF_ARRAY(RootParams); + Desc.NumStaticSamplers = 0; + Desc.pParameters = RootParams; + Desc.pStaticSamplers = nullptr; + Desc.Flags = GetRootSignatureFlags(); + + CreateRootSignature(pGraphicsContext, &Desc, IID_PPV_ARGS(&m_LinearDepthRS)); + SET_RS_DEBUG_NAME(LinearDepthRS); +} + +//-------------------------------------------------------------------------------- +ID3D12PipelineState* GFSDK::SSAO::D3D12::LinearDepthPSO::GetPSO( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + Shaders &Shaders, + Generated::ShaderPermutations::RESOLVE_DEPTH ResolveDepthPermutation, + GFSDK_SSAO_DepthTextureType InputDepthTextureType) +{ + if (!m_LinearDepthPSO.pPSO || + m_ResolveDepthPermutation != ResolveDepthPermutation || + m_InputDepthTextureType != InputDepthTextureType) + { + m_ResolveDepthPermutation = ResolveDepthPermutation; + m_InputDepthTextureType = InputDepthTextureType; + + GFSDK_D3D12_PixelShader* pPS = (m_InputDepthTextureType == GFSDK_SSAO_VIEW_DEPTHS) ? + Shaders.CopyDepth_PS.Get(ResolveDepthPermutation) : + Shaders.LinearizeDepth_PS.Get(ResolveDepthPermutation); + + GFSDK_D3D12_VertexShader* pVS = Shaders.FullScreenTriangle_VS.Get(); + + m_LinearDepthPSO.Desc.pRootSignature = m_LinearDepthRS; + m_LinearDepthPSO.Desc.NumRenderTargets = 1; + m_LinearDepthPSO.Desc.RTVFormats[0] = DXGI_FORMAT_R32_FLOAT; + m_LinearDepthPSO.Desc.SampleDesc.Count = 1; + m_LinearDepthPSO.Desc.NodeMask = pGraphicsContext->NodeMask; + m_LinearDepthPSO.SetVertexShader(pVS); + m_LinearDepthPSO.SetPixelShader(pPS); + + SAFE_RELEASE(m_LinearDepthPSO.pPSO); + CreateGraphicsPipelineState(pGraphicsContext, &m_LinearDepthPSO.Desc, IID_PPV_ARGS(&m_LinearDepthPSO.pPSO)); + SET_PSO_DEBUG_NAME(LinearDepthPSO); + } + + return m_LinearDepthPSO.pPSO; +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::DebugNormalsPSO::Create( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + States &States) +{ + ASSERT(!m_DebugNormalsRS); + + CD3DX12_DESCRIPTOR_RANGE DescRanges[RootParameters::Count]; + DescRanges[RootParameters::Buffer0] = CD3DX12_DESCRIPTOR_RANGE(D3D12_DESCRIPTOR_RANGE_TYPE_CBV, 1, 0); + DescRanges[RootParameters::Texture0] = CD3DX12_DESCRIPTOR_RANGE(D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 1, 0); + DescRanges[RootParameters::Texture1] = CD3DX12_DESCRIPTOR_RANGE(D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 1, 1); + + CD3DX12_ROOT_PARAMETER RootParams[RootParameters::Count]; + for (UINT ParamIndex = 0; ParamIndex < SIZEOF_ARRAY(RootParams); ++ParamIndex) + { + RootParams[ParamIndex].InitAsDescriptorTable(1, &DescRanges[ParamIndex], D3D12_SHADER_VISIBILITY_PIXEL); + } + + CD3DX12_STATIC_SAMPLER_DESC StaticSamplers[1]; + StaticSamplers[0].Init(0); + CopySamplerFrom(&StaticSamplers[0], &GetAODepthSamplerState(States)); + + D3D12_ROOT_SIGNATURE_DESC Desc = {}; + Desc.NumParameters = SIZEOF_ARRAY(RootParams); + Desc.NumStaticSamplers = SIZEOF_ARRAY(StaticSamplers); + Desc.pParameters = RootParams; + Desc.pStaticSamplers = StaticSamplers; + Desc.Flags = GetRootSignatureFlags(); + + CreateRootSignature(pGraphicsContext, &Desc, IID_PPV_ARGS(&m_DebugNormalsRS)); + SET_RS_DEBUG_NAME(DebugNormalsRS); +} + +//-------------------------------------------------------------------------------- +ID3D12PipelineState* GFSDK::SSAO::D3D12::DebugNormalsPSO::GetPSO( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + Shaders &Shaders, + States &States, + OutputInfo& Output, + Generated::ShaderPermutations::FETCH_GBUFFER_NORMAL FetchNormalPermutation) +{ + if (!m_DebugNormalsPSO.pPSO || + m_RTSampleCount != Output.RenderTarget.SampleCount || + m_RTFormat != Output.RenderTarget.Format || + m_FetchNormalPermutation != FetchNormalPermutation) + { + m_RTSampleCount = Output.RenderTarget.SampleCount; + m_RTFormat = Output.RenderTarget.Format; + m_FetchNormalPermutation = FetchNormalPermutation; + + GFSDK_D3D12_PixelShader* pPS = Shaders.DebugNormals_PS.Get(FetchNormalPermutation); + GFSDK_D3D12_PixelShader* pVS = Shaders.FullScreenTriangle_VS.Get(); + + m_DebugNormalsPSO.Desc.pRootSignature = m_DebugNormalsRS; + m_DebugNormalsPSO.Desc.RTVFormats[0] = Output.RenderTarget.Format; + m_DebugNormalsPSO.Desc.DSVFormat = DXGI_FORMAT_UNKNOWN; + m_DebugNormalsPSO.Desc.BlendState = *States.GetBlendStateDisabled(); + m_DebugNormalsPSO.Desc.SampleDesc.Count = Output.RenderTarget.SampleCount; + m_DebugNormalsPSO.Desc.SampleMask = GetOutputMSAASampleMask(); + m_DebugNormalsPSO.Desc.NodeMask = pGraphicsContext->NodeMask; + + m_DebugNormalsPSO.SetVertexShader(pVS); + m_DebugNormalsPSO.SetPixelShader(pPS); + + SAFE_RELEASE(m_DebugNormalsPSO.pPSO); + CreateGraphicsPipelineState(pGraphicsContext, &m_DebugNormalsPSO.Desc, IID_PPV_ARGS(&m_DebugNormalsPSO.pPSO)); + SET_PSO_DEBUG_NAME(DebugNormalsPSO); + } + + return m_DebugNormalsPSO.pPSO; +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::DeinterleavedDepthPSO::Create( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + GFSDK::SSAO::D3D12::States &States) +{ + ASSERT(!m_DeinterleavedDepthRS); + + CD3DX12_DESCRIPTOR_RANGE DescRanges[RootParameters::Count]; + DescRanges[RootParameters::Buffer0] = CD3DX12_DESCRIPTOR_RANGE(D3D12_DESCRIPTOR_RANGE_TYPE_CBV, 1, 0); + DescRanges[RootParameters::Buffer1] = CD3DX12_DESCRIPTOR_RANGE(D3D12_DESCRIPTOR_RANGE_TYPE_CBV, 1, 1); + DescRanges[RootParameters::Texture0] = CD3DX12_DESCRIPTOR_RANGE(D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 1, 0); + + CD3DX12_ROOT_PARAMETER RootParams[RootParameters::Count]; + for (UINT ParamIndex = 0; ParamIndex < SIZEOF_ARRAY(RootParams); ++ParamIndex) + { + RootParams[ParamIndex].InitAsDescriptorTable(1, &DescRanges[ParamIndex], D3D12_SHADER_VISIBILITY_PIXEL); + } + + CD3DX12_STATIC_SAMPLER_DESC StaticSamplers[1]; + StaticSamplers[0].Init(0); + CopySamplerFrom(&StaticSamplers[0], &States.GetSamplerStatePointClamp()); + + D3D12_ROOT_SIGNATURE_DESC Desc = {}; + Desc.NumParameters = SIZEOF_ARRAY(RootParams); + Desc.NumStaticSamplers = SIZEOF_ARRAY(StaticSamplers); + Desc.pParameters = RootParams; + Desc.pStaticSamplers = StaticSamplers; + Desc.Flags = GetRootSignatureFlags(); + + CreateRootSignature(pGraphicsContext, &Desc, IID_PPV_ARGS(&m_DeinterleavedDepthRS)); + SET_RS_DEBUG_NAME(DeinterleavedDepthRS); +} + +//-------------------------------------------------------------------------------- +ID3D12PipelineState* GFSDK::SSAO::D3D12::DeinterleavedDepthPSO::GetPSO( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + GFSDK::SSAO::D3D12::Shaders &Shaders, + GFSDK::SSAO::D3D12::States &States, + GFSDK::SSAO::D3D12::RenderTargets& RTs, + GFSDK_SSAO_DepthStorage DepthStorage) +{ + if (!m_DeinterleavedDepthPSO.pPSO || + m_DepthStorage != DepthStorage) + { + m_DepthStorage = DepthStorage; + + m_DeinterleavedDepthPSO.Desc.pRootSignature = m_DeinterleavedDepthRS; + m_DeinterleavedDepthPSO.Desc.NumRenderTargets = MRT_COUNT; + DXGI_FORMAT Format = RTs.GetViewDepthTextureFormat(DepthStorage); + for (UINT Idx = 0; Idx < MRT_COUNT; ++Idx) + { + m_DeinterleavedDepthPSO.Desc.RTVFormats[Idx] = Format; + } + m_DeinterleavedDepthPSO.Desc.SampleDesc.Count = 1; + m_DeinterleavedDepthPSO.Desc.NodeMask = pGraphicsContext->NodeMask; + m_DeinterleavedDepthPSO.SetVertexShader(Shaders.FullScreenTriangle_VS.Get()); + m_DeinterleavedDepthPSO.SetPixelShader(Shaders.DeinterleaveDepth_PS.Get()); + + SAFE_RELEASE(m_DeinterleavedDepthPSO.pPSO); + CreateGraphicsPipelineState(pGraphicsContext, &m_DeinterleavedDepthPSO.Desc, IID_PPV_ARGS(&m_DeinterleavedDepthPSO.pPSO)); + SET_PSO_DEBUG_NAME(DeinterleavedDepthPSO); + } + + return m_DeinterleavedDepthPSO.pPSO; +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::ReconstructNormalPSO::Create( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + GFSDK::SSAO::D3D12::States &States) +{ + ASSERT(!m_ReconstructNormalRS); + + CD3DX12_DESCRIPTOR_RANGE DescRanges[RootParameters::Count]; + DescRanges[RootParameters::Buffer0] = CD3DX12_DESCRIPTOR_RANGE(D3D12_DESCRIPTOR_RANGE_TYPE_CBV, 1, 0); + DescRanges[RootParameters::Texture0] = CD3DX12_DESCRIPTOR_RANGE(D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 1, 0); + + CD3DX12_ROOT_PARAMETER RootParams[RootParameters::Count]; + for (UINT ParamIndex = 0; ParamIndex < SIZEOF_ARRAY(RootParams); ++ParamIndex) + { + RootParams[ParamIndex].InitAsDescriptorTable(1, &DescRanges[ParamIndex], D3D12_SHADER_VISIBILITY_PIXEL); + } + + RootParams[RootParameters::Buffer0].InitAsDescriptorTable(1, &DescRanges[RootParameters::Buffer0]); + RootParams[RootParameters::Texture0].InitAsDescriptorTable(1, &DescRanges[RootParameters::Texture0], D3D12_SHADER_VISIBILITY_PIXEL); + + CD3DX12_STATIC_SAMPLER_DESC StaticSamplers[1]; + StaticSamplers[0].Init(0); + CopySamplerFrom(&StaticSamplers[0], &GetAODepthSamplerState(States)); + + D3D12_ROOT_SIGNATURE_DESC Desc = {}; + Desc.NumParameters = SIZEOF_ARRAY(RootParams); + Desc.NumStaticSamplers = SIZEOF_ARRAY(StaticSamplers); + Desc.pParameters = RootParams; + Desc.pStaticSamplers = StaticSamplers; + Desc.Flags = GetRootSignatureFlags(); + + CreateRootSignature(pGraphicsContext, &Desc, IID_PPV_ARGS(&m_ReconstructNormalRS)); + SET_RS_DEBUG_NAME(ReconstructNormalRS); +} + +//-------------------------------------------------------------------------------- +ID3D12PipelineState* GFSDK::SSAO::D3D12::ReconstructNormalPSO::GetPSO( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + Shaders &Shaders) +{ + if (!m_ReconstructNormalPSO.pPSO) + { + m_ReconstructNormalPSO.Desc.pRootSignature = m_ReconstructNormalRS; + m_ReconstructNormalPSO.Desc.NumRenderTargets = 1; + m_ReconstructNormalPSO.Desc.RTVFormats[0] = DXGI_FORMAT_R8G8B8A8_UNORM; + m_ReconstructNormalPSO.Desc.SampleDesc.Count = 1; + m_ReconstructNormalPSO.Desc.NodeMask = pGraphicsContext->NodeMask; + + m_ReconstructNormalPSO.SetVertexShader(Shaders.FullScreenTriangle_VS.Get()); + m_ReconstructNormalPSO.SetPixelShader(Shaders.ReconstructNormal_PS.Get()); + + SAFE_RELEASE(m_ReconstructNormalPSO.pPSO); + CreateGraphicsPipelineState(pGraphicsContext, &m_ReconstructNormalPSO.Desc, IID_PPV_ARGS(&m_ReconstructNormalPSO.pPSO)); + SET_PSO_DEBUG_NAME(ReconstructNormalPSO); + } + + return m_ReconstructNormalPSO.pPSO; +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::CoarseAOPSO::Create( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + GFSDK::SSAO::D3D12::States &States) +{ + ASSERT(!m_CoarseAORS); + + CD3DX12_DESCRIPTOR_RANGE DescRanges[RootParameters::Count]; + DescRanges[RootParameters::Buffer0] = CD3DX12_DESCRIPTOR_RANGE(D3D12_DESCRIPTOR_RANGE_TYPE_CBV, 1, 0); + DescRanges[RootParameters::Buffer1] = CD3DX12_DESCRIPTOR_RANGE(D3D12_DESCRIPTOR_RANGE_TYPE_CBV, 1, 1); + DescRanges[RootParameters::Texture0] = CD3DX12_DESCRIPTOR_RANGE(D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 1, 0); + DescRanges[RootParameters::Texture1] = CD3DX12_DESCRIPTOR_RANGE(D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 1, 1); + + CD3DX12_ROOT_PARAMETER RootParams[RootParameters::Count]; + for (UINT ParamIndex = 0; ParamIndex < SIZEOF_ARRAY(RootParams); ++ParamIndex) + { + D3D12_SHADER_VISIBILITY Visibility = (ParamIndex == RootParameters::Buffer1) ? D3D12_SHADER_VISIBILITY_ALL : D3D12_SHADER_VISIBILITY_PIXEL; + RootParams[ParamIndex].InitAsDescriptorTable(1, &DescRanges[ParamIndex], Visibility); + } + + CD3DX12_STATIC_SAMPLER_DESC StaticSamplers[1]; + StaticSamplers[0].Init(0); + CopySamplerFrom(&StaticSamplers[0], &GetAODepthSamplerState(States)); + + D3D12_ROOT_SIGNATURE_DESC Desc = {}; + Desc.NumParameters = SIZEOF_ARRAY(RootParams); + Desc.NumStaticSamplers = SIZEOF_ARRAY(StaticSamplers); + Desc.pParameters = RootParams; + Desc.pStaticSamplers = StaticSamplers; + Desc.Flags = GetRootSignatureFlags(); + + CreateRootSignature(pGraphicsContext, &Desc, IID_PPV_ARGS(&m_CoarseAORS)); + SET_RS_DEBUG_NAME(CoarseAORS); +} + +//-------------------------------------------------------------------------------- +ID3D12PipelineState* GFSDK::SSAO::D3D12::CoarseAOPSO::GetPSO( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + Shaders &Shaders, + Generated::ShaderPermutations::ENABLE_FOREGROUND_AO EnableForegroundAOPermutation, + Generated::ShaderPermutations::ENABLE_BACKGROUND_AO EnableBackgroundAOPermutation, + Generated::ShaderPermutations::ENABLE_DEPTH_THRESHOLD EnableDepthThresholdPermutation, + Generated::ShaderPermutations::FETCH_GBUFFER_NORMAL FetchNormalPermutation) +{ + if (!m_CoarseAOPSO.pPSO || + m_EnableForegroundAOPermutation != EnableForegroundAOPermutation || + m_EnableBackgroundAOPermutation != EnableBackgroundAOPermutation || + m_EnableDepthThresholdPermutation != EnableDepthThresholdPermutation || + m_FetchNormalPermutation != FetchNormalPermutation) + { + m_EnableForegroundAOPermutation = EnableForegroundAOPermutation; + m_EnableBackgroundAOPermutation = EnableBackgroundAOPermutation; + m_EnableDepthThresholdPermutation = EnableDepthThresholdPermutation; + m_FetchNormalPermutation = FetchNormalPermutation; + + m_CoarseAOPSO.Desc.pRootSignature = m_CoarseAORS; + m_CoarseAOPSO.Desc.NumRenderTargets = 1; + m_CoarseAOPSO.Desc.RTVFormats[0] = DXGI_FORMAT_R8_UNORM; + m_CoarseAOPSO.Desc.SampleDesc.Count = 1; + m_CoarseAOPSO.Desc.NodeMask = pGraphicsContext->NodeMask; + m_CoarseAOPSO.SetVertexShader(Shaders.FullScreenTriangle_VS.Get()); + m_CoarseAOPSO.SetPixelShader(Shaders.CoarseAO_PS.Get(EnableForegroundAOPermutation, EnableBackgroundAOPermutation, EnableDepthThresholdPermutation, FetchNormalPermutation)); + m_CoarseAOPSO.SetGeometryShader(Shaders.CoarseAO_GS.Get()); + + SAFE_RELEASE(m_CoarseAOPSO.pPSO); + CreateGraphicsPipelineState(pGraphicsContext, &m_CoarseAOPSO.Desc, IID_PPV_ARGS(&m_CoarseAOPSO.pPSO)); + SET_PSO_DEBUG_NAME(CoarseAOPSO); + } + + return m_CoarseAOPSO.pPSO; +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::ReinterleavedAOBlurPSO::Create( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + GFSDK::SSAO::D3D12::States &States) +{ + ASSERT(!m_ReinterleavedAOBlurRS); + + CD3DX12_DESCRIPTOR_RANGE DescRanges[RootParameters::Count]; + DescRanges[RootParameters::Buffer0] = CD3DX12_DESCRIPTOR_RANGE(D3D12_DESCRIPTOR_RANGE_TYPE_CBV, 1, 0); + DescRanges[RootParameters::Texture0] = CD3DX12_DESCRIPTOR_RANGE(D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 1, 0); + DescRanges[RootParameters::Texture1] = CD3DX12_DESCRIPTOR_RANGE(D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 1, 1); + + CD3DX12_ROOT_PARAMETER RootParams[RootParameters::Count]; + for (UINT ParamIndex = 0; ParamIndex < SIZEOF_ARRAY(RootParams); ++ParamIndex) + { + RootParams[ParamIndex].InitAsDescriptorTable(1, &DescRanges[ParamIndex], D3D12_SHADER_VISIBILITY_PIXEL); + } + + CD3DX12_STATIC_SAMPLER_DESC StaticSamplers[1]; + StaticSamplers[0].Init(0); + CopySamplerFrom(&StaticSamplers[0], &States.GetSamplerStatePointClamp()); + + D3D12_ROOT_SIGNATURE_DESC Desc = {}; + Desc.NumParameters = SIZEOF_ARRAY(RootParams); + Desc.NumStaticSamplers = SIZEOF_ARRAY(StaticSamplers); + Desc.pParameters = RootParams; + Desc.pStaticSamplers = StaticSamplers; + Desc.Flags = GetRootSignatureFlags(); + + CreateRootSignature(pGraphicsContext, &Desc, IID_PPV_ARGS(&m_ReinterleavedAOBlurRS)); + SET_RS_DEBUG_NAME(ReinterleavedAOBlurRS); +} + +//-------------------------------------------------------------------------------- +ID3D12PipelineState* GFSDK::SSAO::D3D12::ReinterleavedAOBlurPSO::GetPSO( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + Shaders &Shaders) +{ + if (!m_ReinterleavedAOBlurPSO.pPSO) + { + m_ReinterleavedAOBlurPSO.Desc.pRootSignature = m_ReinterleavedAOBlurRS; + m_ReinterleavedAOBlurPSO.Desc.NumRenderTargets = 1; + m_ReinterleavedAOBlurPSO.Desc.SampleDesc.Count = 1; + m_ReinterleavedAOBlurPSO.Desc.RTVFormats[0] = DXGI_FORMAT_R16G16_FLOAT; + m_ReinterleavedAOBlurPSO.Desc.NodeMask = pGraphicsContext->NodeMask; + + m_ReinterleavedAOBlurPSO.SetVertexShader(Shaders.FullScreenTriangle_VS.Get()); + m_ReinterleavedAOBlurPSO.SetPixelShader(Shaders.ReinterleaveAO_PS.Get(Generated::ShaderPermutations::ENABLE_BLUR_1)); + + SAFE_RELEASE(m_ReinterleavedAOBlurPSO.pPSO); + CreateGraphicsPipelineState(pGraphicsContext, &m_ReinterleavedAOBlurPSO.Desc, IID_PPV_ARGS(&m_ReinterleavedAOBlurPSO.pPSO)); + SET_PSO_DEBUG_NAME(ReinterleavedAOBlurPSO); + } + + return m_ReinterleavedAOBlurPSO.pPSO; +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::ReinterleavedAOPSO::Create( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + GFSDK::SSAO::D3D12::States &States) +{ + ASSERT(!m_ReinterleavedAORS); + + CD3DX12_DESCRIPTOR_RANGE DescRanges[RootParameters::Count]; + DescRanges[RootParameters::Buffer0] = CD3DX12_DESCRIPTOR_RANGE(D3D12_DESCRIPTOR_RANGE_TYPE_CBV, 1, 0); + DescRanges[RootParameters::Texture0] = CD3DX12_DESCRIPTOR_RANGE(D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 1, 0); + + CD3DX12_ROOT_PARAMETER RootParams[RootParameters::Count]; + for (UINT ParamIndex = 0; ParamIndex < SIZEOF_ARRAY(RootParams); ++ParamIndex) + { + RootParams[ParamIndex].InitAsDescriptorTable(1, &DescRanges[ParamIndex], D3D12_SHADER_VISIBILITY_PIXEL); + } + + CD3DX12_STATIC_SAMPLER_DESC StaticSamplers[1]; + StaticSamplers[0].Init(0); + CopySamplerFrom(&StaticSamplers[0], &States.GetSamplerStatePointClamp()); + + D3D12_ROOT_SIGNATURE_DESC Desc = {}; + Desc.NumParameters = SIZEOF_ARRAY(RootParams); + Desc.NumStaticSamplers = SIZEOF_ARRAY(StaticSamplers); + Desc.pParameters = RootParams; + Desc.pStaticSamplers = StaticSamplers; + Desc.Flags = GetRootSignatureFlags(); + + CreateRootSignature(pGraphicsContext, &Desc, IID_PPV_ARGS(&m_ReinterleavedAORS)); + SET_RS_DEBUG_NAME(ReinterleavedAORS); +} + +//-------------------------------------------------------------------------------- +ID3D12PipelineState* GFSDK::SSAO::D3D12::ReinterleavedAOPSO::GetPSO( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + Shaders &Shaders, + States& States, + OutputInfo& Output) +{ + if (!m_ReinterleavedAOPSO.pPSO || + m_RTSampleCount != Output.RenderTarget.SampleCount || + m_RTFormat != Output.RenderTarget.Format || + m_BlendMode != Output.Blend.Mode) + { + m_RTSampleCount = Output.RenderTarget.SampleCount; + m_RTFormat = Output.RenderTarget.Format; + m_BlendMode = Output.Blend.Mode; + + m_ReinterleavedAOPSO.Desc.pRootSignature = m_ReinterleavedAORS; + m_ReinterleavedAOPSO.Desc.NumRenderTargets = 1; + m_ReinterleavedAOPSO.Desc.SampleDesc.Count = Output.RenderTarget.SampleCount; + m_ReinterleavedAOPSO.Desc.BlendState = *GetOutputBlendState(Output, States); + m_ReinterleavedAOPSO.Desc.SampleMask = GetOutputMSAASampleMask(); + m_ReinterleavedAOPSO.Desc.RTVFormats[0] = Output.RenderTarget.Format; + m_ReinterleavedAOPSO.Desc.NodeMask = pGraphicsContext->NodeMask; + + m_ReinterleavedAOPSO.SetVertexShader(Shaders.FullScreenTriangle_VS.Get()); + m_ReinterleavedAOPSO.SetPixelShader(Shaders.ReinterleaveAO_PS.Get(Generated::ShaderPermutations::ENABLE_BLUR_0)); + + SAFE_RELEASE(m_ReinterleavedAOPSO.pPSO); + CreateGraphicsPipelineState(pGraphicsContext, &m_ReinterleavedAOPSO.Desc, IID_PPV_ARGS(&m_ReinterleavedAOPSO.pPSO)); + SET_PSO_DEBUG_NAME(ReinterleavedAOPSO); + } + + return m_ReinterleavedAOPSO.pPSO; +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::BlurXPSO::Create( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + GFSDK::SSAO::D3D12::States &States) +{ + ASSERT(!m_BlurXRS); + + CD3DX12_DESCRIPTOR_RANGE DescRanges[RootParameters::Count]; + DescRanges[RootParameters::Buffer0] = CD3DX12_DESCRIPTOR_RANGE(D3D12_DESCRIPTOR_RANGE_TYPE_CBV, 1, 0); + DescRanges[RootParameters::Texture0] = CD3DX12_DESCRIPTOR_RANGE(D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 1, 0); + + CD3DX12_ROOT_PARAMETER RootParams[RootParameters::Count]; + for (UINT ParamIndex = 0; ParamIndex < SIZEOF_ARRAY(RootParams); ++ParamIndex) + { + RootParams[ParamIndex].InitAsDescriptorTable(1, &DescRanges[ParamIndex], D3D12_SHADER_VISIBILITY_PIXEL); + } + + CD3DX12_STATIC_SAMPLER_DESC StaticSamplers[2]; + StaticSamplers[0].Init(0); + StaticSamplers[1].Init(1); + + CopySamplerFrom(&StaticSamplers[0], &States.GetSamplerStatePointClamp()); + CopySamplerFrom(&StaticSamplers[1], &States.GetSamplerStateLinearClamp()); + + D3D12_ROOT_SIGNATURE_DESC Desc = {}; + Desc.NumParameters = SIZEOF_ARRAY(RootParams); + Desc.NumStaticSamplers = SIZEOF_ARRAY(StaticSamplers); + Desc.pParameters = RootParams; + Desc.pStaticSamplers = StaticSamplers; + Desc.Flags = GetRootSignatureFlags(); + + CreateRootSignature(pGraphicsContext, &Desc, IID_PPV_ARGS(&m_BlurXRS)); + SET_RS_DEBUG_NAME(BlurXRS); +} + +//-------------------------------------------------------------------------------- +ID3D12PipelineState* GFSDK::SSAO::D3D12::BlurXPSO::GetPSO( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + Shaders &Shaders, + Generated::ShaderPermutations::ENABLE_SHARPNESS_PROFILE EnableSharpnessProfilePermutation, + Generated::ShaderPermutations::KERNEL_RADIUS BlurKernelRadiusPermutation) +{ + if (!m_BlurXPSO.pPSO || + m_EnableSharpnessProfilePermutation != EnableSharpnessProfilePermutation || + m_BlurKernelRadiusPermutation != BlurKernelRadiusPermutation) + { + m_EnableSharpnessProfilePermutation = EnableSharpnessProfilePermutation; + m_BlurKernelRadiusPermutation = BlurKernelRadiusPermutation; + + m_BlurXPSO.Desc.pRootSignature = m_BlurXRS; + m_BlurXPSO.Desc.NumRenderTargets = 1; + m_BlurXPSO.Desc.RTVFormats[0] = DXGI_FORMAT_R16G16_FLOAT; + m_BlurXPSO.Desc.SampleDesc.Count = 1; + m_BlurXPSO.Desc.NodeMask = pGraphicsContext->NodeMask; + + m_BlurXPSO.SetVertexShader(Shaders.FullScreenTriangle_VS.Get()); + m_BlurXPSO.SetPixelShader(Shaders.BlurX_PS.Get(EnableSharpnessProfilePermutation, BlurKernelRadiusPermutation)); + + SAFE_RELEASE(m_BlurXPSO.pPSO); + CreateGraphicsPipelineState(pGraphicsContext, &m_BlurXPSO.Desc, IID_PPV_ARGS(&m_BlurXPSO.pPSO)); + SET_PSO_DEBUG_NAME(BlurXPSO); + } + + return m_BlurXPSO.pPSO; +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::BlurYPSO::Create( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + GFSDK::SSAO::D3D12::States &States) +{ + ASSERT(!m_BlurYRS); + + CD3DX12_DESCRIPTOR_RANGE DescRanges[RootParameters::Count]; + DescRanges[RootParameters::Buffer0] = CD3DX12_DESCRIPTOR_RANGE(D3D12_DESCRIPTOR_RANGE_TYPE_CBV, 1, 0); + DescRanges[RootParameters::Texture0] = CD3DX12_DESCRIPTOR_RANGE(D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 1, 0); + + CD3DX12_ROOT_PARAMETER RootParams[RootParameters::Count]; + for (UINT ParamIndex = 0; ParamIndex < SIZEOF_ARRAY(RootParams); ++ParamIndex) + { + RootParams[ParamIndex].InitAsDescriptorTable(1, &DescRanges[ParamIndex], D3D12_SHADER_VISIBILITY_PIXEL); + } + + CD3DX12_STATIC_SAMPLER_DESC StaticSamplers[2]; + StaticSamplers[0].Init(0); + StaticSamplers[1].Init(1); + + CopySamplerFrom(&StaticSamplers[0], &States.GetSamplerStatePointClamp()); + CopySamplerFrom(&StaticSamplers[1], &States.GetSamplerStateLinearClamp()); + + D3D12_ROOT_SIGNATURE_DESC RootSigDesc = {}; + RootSigDesc.NumParameters = SIZEOF_ARRAY(RootParams); + RootSigDesc.NumStaticSamplers = SIZEOF_ARRAY(StaticSamplers); + RootSigDesc.pParameters = RootParams; + RootSigDesc.pStaticSamplers = StaticSamplers; + RootSigDesc.Flags = GetRootSignatureFlags(); + + CreateRootSignature(pGraphicsContext, &RootSigDesc, IID_PPV_ARGS(&m_BlurYRS)); + SET_RS_DEBUG_NAME(BlurYRS); +} + +//-------------------------------------------------------------------------------- +ID3D12PipelineState* GFSDK::SSAO::D3D12::BlurYPSO::GetPSO( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + Shaders &Shaders, + States& States, + OutputInfo& Output, + Generated::ShaderPermutations::ENABLE_SHARPNESS_PROFILE EnableSharpnessProfilePermutation, + Generated::ShaderPermutations::KERNEL_RADIUS BlurKernelRadiusPermutation) +{ + if (!m_BlurYPSO.pPSO || + m_EnableSharpnessProfilePermutation != EnableSharpnessProfilePermutation || + m_BlurKernelRadiusPermutation != BlurKernelRadiusPermutation || + m_RTSampleCount != Output.RenderTarget.SampleCount || + m_RTFormat != Output.RenderTarget.Format) + { + m_EnableSharpnessProfilePermutation = EnableSharpnessProfilePermutation; + m_BlurKernelRadiusPermutation = BlurKernelRadiusPermutation; + m_RTSampleCount = Output.RenderTarget.SampleCount; + m_RTFormat = Output.RenderTarget.Format; + + m_BlurYPSO.Desc.pRootSignature = m_BlurYRS; + m_BlurYPSO.Desc.NumRenderTargets = 1; + m_BlurYPSO.Desc.RTVFormats[0] = Output.RenderTarget.Format; + m_BlurYPSO.Desc.SampleDesc.Count = Output.RenderTarget.SampleCount; + m_BlurYPSO.Desc.BlendState = *GetOutputBlendState(Output, States); + m_BlurYPSO.Desc.SampleMask = GetOutputMSAASampleMask(); + m_BlurYPSO.Desc.NodeMask = pGraphicsContext->NodeMask; + + m_BlurYPSO.SetVertexShader(Shaders.FullScreenTriangle_VS.Get()); + m_BlurYPSO.SetPixelShader(Shaders.BlurY_PS.Get(EnableSharpnessProfilePermutation, BlurKernelRadiusPermutation)); + + SAFE_RELEASE(m_BlurYPSO.pPSO); + CreateGraphicsPipelineState(pGraphicsContext, &m_BlurYPSO.Desc, IID_PPV_ARGS(&m_BlurYPSO.pPSO)); + SET_PSO_DEBUG_NAME(BlurYPSO); + } + + return m_BlurYPSO.pPSO; +} + +#endif diff --git a/src/PipelineStateObjects_DX12.h b/src/PipelineStateObjects_DX12.h new file mode 100644 index 0000000..58def6e --- /dev/null +++ b/src/PipelineStateObjects_DX12.h @@ -0,0 +1,601 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#if SUPPORT_D3D12 + +#pragma once +#include "Common.h" +#include "Shaders_DX12.h" +#include "RenderTargets_DX12.h" +#include "States_DX12.h" +#include "OutputInfo.h" + +namespace GFSDK +{ +namespace SSAO +{ +namespace D3D12 +{ + +//-------------------------------------------------------------------------------- +struct GraphicsPSO +{ + ID3D12PipelineState* pPSO; + D3D12_GRAPHICS_PIPELINE_STATE_DESC Desc; + + GraphicsPSO() + : pPSO(nullptr) + { + Desc = {}; + Desc.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE; + Desc.InputLayout.NumElements = 0; + Desc.InputLayout.pInputElementDescs = nullptr; + Desc.IBStripCutValue = D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED; + Desc.pRootSignature = nullptr; + Desc.RasterizerState = CD3DX12_RASTERIZER_DESC(D3D12_DEFAULT); + Desc.BlendState = CD3DX12_BLEND_DESC(D3D12_DEFAULT); + Desc.DepthStencilState.DepthEnable = false; + Desc.DepthStencilState.DepthFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL; + Desc.DepthStencilState.DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL; + Desc.DepthStencilState.StencilEnable = false; + Desc.SampleMask = UINT_MAX; + Desc.NumRenderTargets = 1; + Desc.RTVFormats[0] = DXGI_FORMAT_UNKNOWN; + Desc.DSVFormat = DXGI_FORMAT_UNKNOWN; + Desc.SampleDesc.Count = 1; + } + + void SetGeometryShader(GFSDK_D3D12_GeometryShader* GS) + { + Desc.GS.BytecodeLength = GS->BytecodeLength; + Desc.GS.pShaderBytecode = GS->pShaderBytecode; + } + + void SetVertexShader(GFSDK_D3D12_VertexShader* VS) + { + Desc.VS.BytecodeLength = VS->BytecodeLength; + Desc.VS.pShaderBytecode = VS->pShaderBytecode; + } + + void SetPixelShader(GFSDK_D3D12_PixelShader* PS) + { + Desc.PS.BytecodeLength = PS->BytecodeLength; + Desc.PS.pShaderBytecode = PS->pShaderBytecode; + } +}; + +//-------------------------------------------------------------------------------- +class BasePSO +{ +public: + static D3D12_ROOT_SIGNATURE_FLAGS GetRootSignatureFlags() + { + D3D12_ROOT_SIGNATURE_FLAGS Flags = D3D12_ROOT_SIGNATURE_FLAG_NONE; + Flags |= D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS; + Flags |= D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS; + return Flags; + } + + static void CreateRootSignature( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + const D3D12_ROOT_SIGNATURE_DESC* pDesc, + REFIID riid, + void **ppvRootSignature) + { + ID3D10Blob *SignatureBlob = nullptr; + THROW_IF_FAILED(D3D12SerializeRootSignature(pDesc, D3D_ROOT_SIGNATURE_VERSION_1, &SignatureBlob, nullptr)); + THROW_IF_FAILED(pGraphicsContext->pDevice->CreateRootSignature(pGraphicsContext->NodeMask, SignatureBlob->GetBufferPointer(), SignatureBlob->GetBufferSize(), riid, ppvRootSignature)); + SignatureBlob->Release(); + } + + static void CreateGraphicsPipelineState( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc, + REFIID riid, + void **ppPipelineState) + { + THROW_IF_FAILED(pGraphicsContext->pDevice->CreateGraphicsPipelineState(pDesc, riid, ppPipelineState)); + } + + static void CopySamplerFrom(D3D12_STATIC_SAMPLER_DESC* Dest, D3D12_SAMPLER_DESC* Src) + { + Dest->Filter = Src->Filter; + Dest->AddressU = Src->AddressU; + Dest->AddressV = Src->AddressV; + Dest->AddressW = Src->AddressW; + Dest->MipLODBias = Src->MipLODBias; + Dest->MaxAnisotropy = Src->MaxAnisotropy; + Dest->ComparisonFunc = Src->ComparisonFunc; + Dest->MinLOD = Src->MinLOD; + Dest->MaxLOD = Src->MaxLOD; + } + + D3D12_SAMPLER_DESC& GetAODepthSamplerState(GFSDK::SSAO::D3D12::States &States) + { + return States.GetSamplerStatePointClamp(); + } + + UINT GetOutputMSAASampleMask() + { + return D3D12_DEFAULT_SAMPLE_MASK; + } + + D3D12_BLEND_DESC* GetOutputBlendState(OutputInfo& Output, States& States) + { + return (Output.Blend.Mode == GFSDK_SSAO_OVERWRITE_RGB) ? States.GetBlendStateDisabledPreserveAlpha() : + (Output.Blend.Mode == GFSDK_SSAO_MULTIPLY_RGB) ? States.GetBlendStateMultiplyPreserveAlpha() : + Output.Blend.CustomState.pBlendState; + } +}; + +//-------------------------------------------------------------------------------- +class LinearDepthPSO: public BasePSO +{ +private: + GraphicsPSO m_LinearDepthPSO; + ID3D12RootSignature* m_LinearDepthRS; + int m_ResolveDepthPermutation; + int m_InputDepthTextureType; + +public: + LinearDepthPSO() + : m_LinearDepthRS(nullptr) + , m_ResolveDepthPermutation(-1) + , m_InputDepthTextureType(-1) + { + } + + struct RootParameters + { + enum Indices + { + Buffer0, + Texture0, + Count + }; + }; + + void Create(GFSDK_D3D12_GraphicsContext* pGraphicsContext); + + void Release() + { + SAFE_RELEASE(m_LinearDepthRS); + SAFE_RELEASE(m_LinearDepthPSO.pPSO); + } + + ID3D12RootSignature* GetRS() + { + ASSERT(m_LinearDepthRS); + return m_LinearDepthRS; + } + + ID3D12PipelineState* GetPSO( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + Shaders &Shaders, + Generated::ShaderPermutations::RESOLVE_DEPTH ResolveDepthPermutation, + GFSDK_SSAO_DepthTextureType InputDepthTextureType); +}; + +//-------------------------------------------------------------------------------- +class DebugNormalsPSO : public BasePSO +{ +private: + GraphicsPSO m_DebugNormalsPSO; + ID3D12RootSignature* m_DebugNormalsRS; + UINT m_RTSampleCount; + DXGI_FORMAT m_RTFormat; + int m_FetchNormalPermutation; + +public: + DebugNormalsPSO() + : m_DebugNormalsRS(nullptr) + , m_RTSampleCount(0) + , m_RTFormat(DXGI_FORMAT_UNKNOWN) + , m_FetchNormalPermutation(-1) + { + } + + struct RootParameters + { + enum Indices + { + Buffer0, + Texture0, + Texture1, + Count + }; + }; + + void Create( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + States &States); + + void Release() + { + SAFE_RELEASE(m_DebugNormalsRS); + SAFE_RELEASE(m_DebugNormalsPSO.pPSO); + } + + ID3D12RootSignature* GetRS() + { + ASSERT(m_DebugNormalsRS); + return m_DebugNormalsRS; + } + + ID3D12PipelineState* GetPSO( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + Shaders &Shaders, + States &States, + OutputInfo& Output, + Generated::ShaderPermutations::FETCH_GBUFFER_NORMAL FetchNormalPermutation); +}; + +//-------------------------------------------------------------------------------- +class DeinterleavedDepthPSO : public BasePSO +{ +private: + GraphicsPSO m_DeinterleavedDepthPSO; + ID3D12RootSignature* m_DeinterleavedDepthRS; + int m_DepthStorage; + +public: + DeinterleavedDepthPSO() + : m_DeinterleavedDepthRS(nullptr) + , m_DepthStorage(-1) + { + } + + static const UINT MRT_COUNT = MAX_NUM_MRTS; + + struct RootParameters + { + enum Indices + { + Buffer0, + Buffer1, + Texture0, + Count + }; + }; + + void Create( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + GFSDK::SSAO::D3D12::States &States); + + void Release() + { + SAFE_RELEASE(m_DeinterleavedDepthRS); + SAFE_RELEASE(m_DeinterleavedDepthPSO.pPSO); + } + + ID3D12RootSignature* GetRS() + { + ASSERT(m_DeinterleavedDepthRS); + return m_DeinterleavedDepthRS; + } + + ID3D12PipelineState* GetPSO( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + GFSDK::SSAO::D3D12::Shaders &Shaders, + GFSDK::SSAO::D3D12::States &States, + GFSDK::SSAO::D3D12::RenderTargets& RTs, + GFSDK_SSAO_DepthStorage DepthStorage); +}; + +//-------------------------------------------------------------------------------- +class ReconstructNormalPSO : public BasePSO +{ +private: + GraphicsPSO m_ReconstructNormalPSO; + ID3D12RootSignature* m_ReconstructNormalRS; + +public: + ReconstructNormalPSO() + : m_ReconstructNormalRS(nullptr) + { + } + + struct RootParameters + { + enum Indices + { + Buffer0, + Texture0, + Count + }; + }; + + void Create( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + GFSDK::SSAO::D3D12::States &States); + + void Release() + { + SAFE_RELEASE(m_ReconstructNormalRS); + SAFE_RELEASE(m_ReconstructNormalPSO.pPSO); + } + + ID3D12RootSignature* GetRS() + { + ASSERT(m_ReconstructNormalRS); + return m_ReconstructNormalRS; + } + + ID3D12PipelineState* GetPSO( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + Shaders &Shaders); +}; + +//-------------------------------------------------------------------------------- +class CoarseAOPSO : public BasePSO +{ +private: + GraphicsPSO m_CoarseAOPSO; + ID3D12RootSignature* m_CoarseAORS; + int m_EnableForegroundAOPermutation; + int m_EnableBackgroundAOPermutation; + int m_EnableDepthThresholdPermutation; + int m_FetchNormalPermutation; + +public: + CoarseAOPSO() + : m_CoarseAORS(nullptr) + , m_EnableForegroundAOPermutation(-1) + , m_EnableBackgroundAOPermutation(-1) + , m_EnableDepthThresholdPermutation(-1) + , m_FetchNormalPermutation(-1) + { + } + + struct RootParameters + { + enum Indices + { + Buffer0, + Buffer1, + Texture0, + Texture1, + Count + }; + }; + + void Create( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + GFSDK::SSAO::D3D12::States &States); + + void Release() + { + SAFE_RELEASE(m_CoarseAORS); + SAFE_RELEASE(m_CoarseAOPSO.pPSO); + } + + ID3D12RootSignature* GetRS() + { + ASSERT(m_CoarseAORS); + return m_CoarseAORS; + } + + ID3D12PipelineState* GetPSO( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + Shaders &Shaders, + Generated::ShaderPermutations::ENABLE_FOREGROUND_AO EnableForegroundAOPermutation, + Generated::ShaderPermutations::ENABLE_BACKGROUND_AO EnableBackgroundAOPermutation, + Generated::ShaderPermutations::ENABLE_DEPTH_THRESHOLD EnableDepthThresholdPermutation, + Generated::ShaderPermutations::FETCH_GBUFFER_NORMAL FetchNormalPermutation); +}; + +//-------------------------------------------------------------------------------- +class ReinterleavedAOBlurPSO : public BasePSO +{ +private: + GraphicsPSO m_ReinterleavedAOBlurPSO; + ID3D12RootSignature* m_ReinterleavedAOBlurRS; + +public: + ReinterleavedAOBlurPSO() + : m_ReinterleavedAOBlurRS(nullptr) + { + } + + struct RootParameters + { + enum Indices + { + Buffer0, + Texture0, + Texture1, + Count + }; + }; + + void Create( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + GFSDK::SSAO::D3D12::States &States); + + void Release() + { + SAFE_RELEASE(m_ReinterleavedAOBlurRS); + SAFE_RELEASE(m_ReinterleavedAOBlurPSO.pPSO); + } + + ID3D12RootSignature* GetRS() + { + ASSERT(m_ReinterleavedAOBlurRS); + return m_ReinterleavedAOBlurRS; + } + + ID3D12PipelineState* GetPSO( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + Shaders &Shaders); +}; + +//-------------------------------------------------------------------------------- +class ReinterleavedAOPSO : public BasePSO +{ +private: + GraphicsPSO m_ReinterleavedAOPSO; + ID3D12RootSignature* m_ReinterleavedAORS; + UINT m_RTSampleCount; + DXGI_FORMAT m_RTFormat; + int m_BlendMode; + +public: + ReinterleavedAOPSO() + : m_ReinterleavedAORS(nullptr) + , m_RTSampleCount(0) + , m_RTFormat(DXGI_FORMAT_UNKNOWN) + , m_BlendMode(-1) + { + } + + struct RootParameters + { + enum Indices + { + Buffer0, + Texture0, + Count + }; + }; + + void Create( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + GFSDK::SSAO::D3D12::States &States); + + void Release() + { + SAFE_RELEASE(m_ReinterleavedAORS); + SAFE_RELEASE(m_ReinterleavedAOPSO.pPSO); + } + + ID3D12RootSignature* GetRS() + { + ASSERT(m_ReinterleavedAORS); + return m_ReinterleavedAORS; + } + + ID3D12PipelineState* GetPSO( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + Shaders &Shaders, + States& States, + OutputInfo& Output); +}; + +//-------------------------------------------------------------------------------- +class BlurXPSO : public BasePSO +{ +private: + GraphicsPSO m_BlurXPSO; + ID3D12RootSignature* m_BlurXRS; + int m_EnableSharpnessProfilePermutation; + int m_BlurKernelRadiusPermutation; + +public: + BlurXPSO() + : m_BlurXRS(nullptr) + , m_EnableSharpnessProfilePermutation(-1) + , m_BlurKernelRadiusPermutation(-1) + { + } + + struct RootParameters + { + enum Indices + { + Buffer0, + Texture0, + Count + }; + }; + + void Create( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + GFSDK::SSAO::D3D12::States &States); + + void Release() + { + SAFE_RELEASE(m_BlurXRS); + SAFE_RELEASE(m_BlurXPSO.pPSO); + } + + ID3D12RootSignature* GetRS() + { + ASSERT(m_BlurXRS); + return m_BlurXRS; + } + + ID3D12PipelineState* GetPSO( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + Shaders &Shaders, + Generated::ShaderPermutations::ENABLE_SHARPNESS_PROFILE EnableSharpnessProfilePermutation, + Generated::ShaderPermutations::KERNEL_RADIUS BlurKernelRadiusPermutation); +}; + +//-------------------------------------------------------------------------------- +class BlurYPSO : public BasePSO +{ +private: + GraphicsPSO m_BlurYPSO; + ID3D12RootSignature* m_BlurYRS; + int m_EnableSharpnessProfilePermutation; + int m_BlurKernelRadiusPermutation; + UINT m_RTSampleCount; + DXGI_FORMAT m_RTFormat; + +public: + BlurYPSO() + : m_BlurYRS(nullptr) + , m_EnableSharpnessProfilePermutation(-1) + , m_BlurKernelRadiusPermutation(-1) + , m_RTSampleCount(0) + , m_RTFormat(DXGI_FORMAT_UNKNOWN) + { + } + + struct RootParameters + { + enum Indices + { + Buffer0, + Texture0, + Count + }; + }; + + void Create( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + GFSDK::SSAO::D3D12::States &States); + + void Release() + { + SAFE_RELEASE(m_BlurYRS); + SAFE_RELEASE(m_BlurYPSO.pPSO); + } + + ID3D12RootSignature* GetRS() + { + ASSERT(m_BlurYRS); + return m_BlurYRS; + } + + ID3D12PipelineState* GetPSO( + GFSDK_D3D12_GraphicsContext* pGraphicsContext, + Shaders &Shaders, + States& States, + OutputInfo& Output, + Generated::ShaderPermutations::ENABLE_SHARPNESS_PROFILE EnableSharpnessProfilePermutation, + Generated::ShaderPermutations::KERNEL_RADIUS BlurKernelRadiusPermutation); +}; + +} // namespace D3D12 +} // namespace SSAO +} // namespace GFSDK + +#endif // SUPPORT_D3D12 diff --git a/src/ProjectionMatrixInfo.cpp b/src/ProjectionMatrixInfo.cpp new file mode 100644 index 0000000..2a19892 --- /dev/null +++ b/src/ProjectionMatrixInfo.cpp @@ -0,0 +1,63 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "ProjectionMatrixInfo.h" +#include "MatrixView.h" + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::ProjectionMatrixInfo::Init(const GFSDK_SSAO_Matrix& ProjectionMatrix, APIConventions API) +{ + if (!IsValid(ProjectionMatrix)) + { + return GFSDK_SSAO_INVALID_PROJECTION_MATRIX; + } + + MatrixView m(ProjectionMatrix); + + // In matrices generated with D3DXMatrixPerspectiveFovRH + // A = zf/(zn-zf) + // B = zn*zf/(zn-zf) + // C = -1 + float A = m(2,2); + float B = m(3,2); + float C = m(2,3); + + // In matrices generated with D3DXMatrixPerspectiveFovLH + // A = -zf/(zn-zf) + // B = zn*zf/(zn-zf) + // C = 1 + if (C == 1.f) + { + A = -A; + } + + // Rely on INFs to be generated in case of any divisions by zero + m_ZNear = (API == API_GL) ? (B / (A - 1.f)) : (B / A); + m_ZFar = B / (A + 1.f); + + // Some matrices may use negative m00 or m11 terms to flip X/Y axises + m_TanHalfFovX = 1.f / fabs(m(0,0)); + m_TanHalfFovY = 1.f / fabs(m(1,1)); + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +bool GFSDK::SSAO::ProjectionMatrixInfo::IsValid(const GFSDK_SSAO_Matrix& ProjectionMatrix) +{ + MatrixView m(ProjectionMatrix); + + // Do not check m(2,0) and m(2,1) to allow off-centered projections + // Do not check m(2,2) to allow reverse infinite projections + return (m(0,0) != 0.0f && m(0,1) == 0.0f && m(0,2) == 0.0f && m(0,3) == 0.0f && + m(1,0) == 0.0f && m(1,1) != 0.0f && m(1,2) == 0.0f && m(1,3) == 0.0f && + fabs(m(2,3)) == 1.0f && + m(3,0) == 0.0f && m(3,1) == 0.0f && m(3,2) != 0.0f && m(3,3) == 0.0f); +} diff --git a/src/ProjectionMatrixInfo.h b/src/ProjectionMatrixInfo.h new file mode 100644 index 0000000..e4216a2 --- /dev/null +++ b/src/ProjectionMatrixInfo.h @@ -0,0 +1,72 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#pragma once +#include "Common.h" + +namespace GFSDK +{ +namespace SSAO +{ + +enum APIConventions +{ + API_D3D11, + API_GL +}; + +class ProjectionMatrixInfo +{ +public: + ProjectionMatrixInfo() + : m_ZNear(0.f) + , m_ZFar(0.f) + , m_TanHalfFovX(0.f) + , m_TanHalfFovY(0.f) + { + } + + GFSDK_SSAO_Status Init(const GFSDK_SSAO_Matrix& ProjectionMatrix, APIConventions API); + static bool IsValid(const GFSDK_SSAO_Matrix& ProjectionMatrix); + + // Clamp to EPSILON to avoid any divisions by 0.f + float GetInverseZNear() const + { + return Max(1.f / m_ZNear, EPSILON); + } + float GetInverseZFar() const + { + return Max(1.f / m_ZFar, EPSILON); + } + + float GetTanHalfFovX() const + { + return m_TanHalfFovX; + } + float GetTanHalfFovY() const + { + return m_TanHalfFovY; + } + + void GetDepthRange(GFSDK_SSAO_ProjectionMatrixDepthRange* pDepthRange) + { + pDepthRange->ZNear = 1.f / GetInverseZNear(); + pDepthRange->ZFar = 1.f / GetInverseZFar(); + } + +private: + float m_ZNear; + float m_ZFar; + float m_TanHalfFovX; + float m_TanHalfFovY; +}; + +} // namespace SSAO +} // namespace GFSDK diff --git a/src/RandomTexture.cpp b/src/RandomTexture.cpp new file mode 100644 index 0000000..cf0f357 --- /dev/null +++ b/src/RandomTexture.cpp @@ -0,0 +1,184 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "RandomTexture.h" + +//-------------------------------------------------------------------------------- +float GFSDK::SSAO::RandomTexture::GetRandomNumber(UINT Index) +{ + // Mersenne-Twister random numbers in [0,1). + static const float MersenneTwisterNumbers[1024] = { + 0.463937f,0.340042f,0.223035f,0.468465f,0.322224f,0.979269f,0.031798f,0.973392f,0.778313f,0.456168f,0.258593f,0.330083f,0.387332f,0.380117f,0.179842f,0.910755f, + 0.511623f,0.092933f,0.180794f,0.620153f,0.101348f,0.556342f,0.642479f,0.442008f,0.215115f,0.475218f,0.157357f,0.568868f,0.501241f,0.629229f,0.699218f,0.707733f, + 0.556725f,0.005520f,0.708315f,0.583199f,0.236644f,0.992380f,0.981091f,0.119804f,0.510866f,0.560499f,0.961497f,0.557862f,0.539955f,0.332871f,0.417807f,0.920779f, + 0.730747f,0.076690f,0.008562f,0.660104f,0.428921f,0.511342f,0.587871f,0.906406f,0.437980f,0.620309f,0.062196f,0.119485f,0.235646f,0.795892f,0.044437f,0.617311f, + 0.891128f,0.263161f,0.245298f,0.276518f,0.786986f,0.059768f,0.424345f,0.433341f,0.052190f,0.699924f,0.139479f,0.402873f,0.741976f,0.557978f,0.127093f,0.946352f, + 0.205587f,0.092822f,0.422956f,0.715176f,0.711952f,0.926062f,0.368646f,0.286516f,0.241413f,0.831616f,0.232247f,0.478637f,0.366948f,0.432024f,0.268430f,0.619122f, + 0.391737f,0.056698f,0.067702f,0.509009f,0.920858f,0.298358f,0.701015f,0.044309f,0.936794f,0.485976f,0.271286f,0.108779f,0.325844f,0.682314f,0.955090f,0.658145f, + 0.295861f,0.562559f,0.867194f,0.810552f,0.487959f,0.869567f,0.224706f,0.962637f,0.646548f,0.003730f,0.228857f,0.263667f,0.365176f,0.958302f,0.606619f,0.901869f, + 0.757257f,0.306061f,0.633172f,0.407697f,0.443632f,0.979959f,0.922944f,0.946421f,0.594079f,0.604343f,0.864211f,0.187557f,0.877119f,0.792025f,0.954840f,0.976719f, + 0.350546f,0.834781f,0.945113f,0.155877f,0.411841f,0.552378f,0.855409f,0.741383f,0.761251f,0.896223f,0.782077f,0.266224f,0.128873f,0.645733f,0.591567f,0.247385f, + 0.260848f,0.811970f,0.653369f,0.976713f,0.221533f,0.957436f,0.294018f,0.159025f,0.820596f,0.569601f,0.934328f,0.467182f,0.763165f,0.835736f,0.240033f,0.389869f, + 0.998754f,0.783739f,0.758034f,0.614317f,0.221128f,0.502497f,0.978066f,0.247794f,0.619551f,0.658307f,0.769667f,0.768478f,0.337143f,0.370689f,0.084723f,0.510534f, + 0.594996f,0.994636f,0.181230f,0.868113f,0.312023f,0.480495f,0.177356f,0.367374f,0.741642f,0.202983f,0.229404f,0.108165f,0.098607f,0.010412f,0.727391f,0.942217f, + 0.023850f,0.110631f,0.958293f,0.208996f,0.584609f,0.491803f,0.238266f,0.591587f,0.297477f,0.681421f,0.215040f,0.587764f,0.704494f,0.978978f,0.911686f,0.692657f, + 0.462987f,0.273259f,0.802855f,0.651633f,0.736728f,0.986217f,0.402363f,0.524098f,0.740470f,0.799076f,0.918257f,0.705367f,0.477477f,0.102279f,0.809959f,0.860645f, + 0.118276f,0.009567f,0.280106f,0.948473f,0.025423f,0.458173f,0.512607f,0.082088f,0.536906f,0.472590f,0.835726f,0.078518f,0.357919f,0.797522f,0.570516f,0.162719f, + 0.815968f,0.874141f,0.915300f,0.392073f,0.366307f,0.766238f,0.462755f,0.087614f,0.402357f,0.277686f,0.294194f,0.392791f,0.504893f,0.263420f,0.509197f,0.518974f, + 0.738809f,0.965800f,0.003864f,0.976899f,0.292287f,0.837148f,0.525498f,0.743779f,0.359015f,0.060636f,0.595481f,0.483102f,0.900195f,0.423277f,0.981990f,0.154968f, + 0.085584f,0.681517f,0.814437f,0.105936f,0.972238f,0.207062f,0.994642f,0.989271f,0.646217f,0.330263f,0.432094f,0.139929f,0.908629f,0.271571f,0.539319f,0.845182f, + 0.140069f,0.001406f,0.340195f,0.582218f,0.693570f,0.293148f,0.733441f,0.375523f,0.676068f,0.130642f,0.606523f,0.441091f,0.113519f,0.844462f,0.399921f,0.551049f, + 0.482781f,0.894854f,0.188909f,0.431045f,0.043693f,0.394601f,0.544309f,0.798761f,0.040417f,0.022292f,0.681257f,0.598379f,0.069981f,0.255632f,0.174776f,0.880842f, + 0.412071f,0.397976f,0.932835f,0.979471f,0.244276f,0.488083f,0.313785f,0.858199f,0.390958f,0.426132f,0.754800f,0.360781f,0.862827f,0.526424f,0.090054f,0.673971f, + 0.715044f,0.237489f,0.210234f,0.952837f,0.448429f,0.738062f,0.077342f,0.260666f,0.590478f,0.127519f,0.628981f,0.136232f,0.860189f,0.596789f,0.524043f,0.897171f, + 0.648864f,0.116735f,0.666835f,0.536993f,0.811733f,0.854961f,0.857206f,0.945069f,0.434195f,0.602343f,0.823780f,0.109481f,0.684652f,0.195598f,0.213630f,0.283516f, + 0.387092f,0.182029f,0.834655f,0.948975f,0.373107f,0.249751f,0.162575f,0.587850f,0.192648f,0.737863f,0.777432f,0.651490f,0.562558f,0.918301f,0.094830f,0.260698f, + 0.629400f,0.751325f,0.362210f,0.649610f,0.397390f,0.670624f,0.215662f,0.925465f,0.908397f,0.486853f,0.141060f,0.236122f,0.926399f,0.416056f,0.781483f,0.538538f, + 0.119521f,0.004196f,0.847561f,0.876772f,0.945552f,0.935095f,0.422025f,0.502860f,0.932500f,0.116670f,0.700854f,0.995577f,0.334925f,0.174659f,0.982878f,0.174110f, + 0.734294f,0.769366f,0.917586f,0.382623f,0.795816f,0.051831f,0.528121f,0.691978f,0.337981f,0.675601f,0.969444f,0.354908f,0.054569f,0.254278f,0.978879f,0.611259f, + 0.890006f,0.712659f,0.219624f,0.826455f,0.351117f,0.087383f,0.862534f,0.805461f,0.499343f,0.482118f,0.036473f,0.815656f,0.016539f,0.875982f,0.308313f,0.650039f, + 0.494165f,0.615983f,0.396761f,0.921652f,0.164612f,0.472705f,0.559820f,0.675677f,0.059891f,0.295793f,0.818010f,0.769365f,0.158699f,0.648142f,0.228793f,0.627454f, + 0.138543f,0.639463f,0.200399f,0.352380f,0.470716f,0.888694f,0.311777f,0.571183f,0.979317f,0.457287f,0.115151f,0.725631f,0.620539f,0.629373f,0.850207f,0.949974f, + 0.254675f,0.142306f,0.688887f,0.307235f,0.284882f,0.847675f,0.617070f,0.207422f,0.550545f,0.541886f,0.173878f,0.474841f,0.678372f,0.289180f,0.528111f,0.306538f, + 0.869399f,0.040299f,0.417301f,0.472569f,0.857612f,0.917462f,0.842319f,0.986865f,0.604528f,0.731115f,0.607880f,0.904675f,0.397955f,0.627867f,0.533371f,0.656758f, + 0.627210f,0.223554f,0.268442f,0.254858f,0.834380f,0.131010f,0.838028f,0.613512f,0.821627f,0.859779f,0.405212f,0.909901f,0.036186f,0.643093f,0.187064f,0.945730f, + 0.319022f,0.709012f,0.852200f,0.559587f,0.865751f,0.368890f,0.840416f,0.950571f,0.315120f,0.331749f,0.509218f,0.468617f,0.119006f,0.541820f,0.983444f,0.115515f, + 0.299804f,0.840386f,0.445282f,0.900755f,0.633600f,0.304196f,0.996153f,0.844025f,0.462361f,0.314402f,0.850035f,0.773624f,0.958303f,0.765382f,0.567577f,0.722607f, + 0.001299f,0.189690f,0.364661f,0.192390f,0.836882f,0.783680f,0.026723f,0.065230f,0.588791f,0.937752f,0.993644f,0.597499f,0.851975f,0.670339f,0.360987f,0.755649f, + 0.571521f,0.231990f,0.425067f,0.116442f,0.321815f,0.629616f,0.701207f,0.716931f,0.146357f,0.360526f,0.498487f,0.846096f,0.307994f,0.323456f,0.288884f,0.477935f, + 0.236433f,0.876589f,0.667459f,0.977175f,0.179347f,0.479408f,0.633292f,0.957666f,0.343651f,0.871846f,0.452856f,0.895494f,0.327657f,0.867779f,0.596825f,0.907009f, + 0.417409f,0.530739f,0.547422f,0.141032f,0.721096f,0.587663f,0.830054f,0.460860f,0.563898f,0.673780f,0.035824f,0.755808f,0.331846f,0.653460f,0.926339f,0.724599f, + 0.978501f,0.495221f,0.098108f,0.936766f,0.139911f,0.851336f,0.889867f,0.376509f,0.661482f,0.156487f,0.671886f,0.487835f,0.046571f,0.441975f,0.014015f,0.440433f, + 0.235927f,0.163762f,0.075399f,0.254734f,0.214011f,0.554803f,0.712877f,0.795785f,0.471616f,0.105032f,0.355989f,0.834418f,0.498021f,0.018318f,0.364799f,0.918869f, + 0.909222f,0.858506f,0.928250f,0.946347f,0.755364f,0.408753f,0.137841f,0.247870f,0.300618f,0.470068f,0.248714f,0.521691f,0.009862f,0.891550f,0.908914f,0.227533f, + 0.702908f,0.596738f,0.581597f,0.099904f,0.804893f,0.947457f,0.080649f,0.375755f,0.890498f,0.689130f,0.600941f,0.382261f,0.814084f,0.258373f,0.278029f,0.907399f, + 0.625024f,0.016637f,0.502896f,0.743077f,0.247834f,0.846201f,0.647815f,0.379888f,0.517357f,0.921494f,0.904846f,0.805645f,0.671974f,0.487205f,0.678009f,0.575624f, + 0.910779f,0.947642f,0.524788f,0.231298f,0.299029f,0.068158f,0.569690f,0.121049f,0.701641f,0.311914f,0.447310f,0.014019f,0.013391f,0.257855f,0.481835f,0.808870f, + 0.628222f,0.780253f,0.202719f,0.024902f,0.774355f,0.783080f,0.330077f,0.788864f,0.346888f,0.778702f,0.261985f,0.696691f,0.212839f,0.713849f,0.871828f,0.639753f, + 0.711037f,0.651247f,0.042374f,0.236938f,0.746267f,0.235043f,0.442707f,0.195417f,0.175918f,0.987980f,0.031270f,0.975425f,0.277087f,0.752667f,0.639751f,0.507857f, + 0.873571f,0.775393f,0.390003f,0.415997f,0.287861f,0.189340f,0.837939f,0.186253f,0.355633f,0.803788f,0.029124f,0.802046f,0.248046f,0.354010f,0.420571f,0.109523f, + 0.731250f,0.700653f,0.716019f,0.651507f,0.250055f,0.884214f,0.364255f,0.244975f,0.472268f,0.080641f,0.309332f,0.250613f,0.519091f,0.066142f,0.037804f,0.865752f, + 0.767738f,0.617325f,0.537048f,0.743959f,0.401200f,0.595458f,0.869843f,0.193999f,0.670364f,0.018494f,0.743159f,0.979555f,0.382352f,0.191059f,0.992247f,0.946175f, + 0.306473f,0.793720f,0.687331f,0.556239f,0.958367f,0.390949f,0.357823f,0.110213f,0.977540f,0.831431f,0.485895f,0.148678f,0.847327f,0.733145f,0.397393f,0.376365f, + 0.398704f,0.463869f,0.976946f,0.844771f,0.075688f,0.473865f,0.470958f,0.548172f,0.350174f,0.727441f,0.123139f,0.347760f,0.839587f,0.562705f,0.036853f,0.564723f, + 0.960356f,0.220534f,0.906969f,0.677664f,0.841052f,0.111530f,0.032346f,0.027749f,0.468255f,0.229196f,0.508756f,0.199613f,0.298103f,0.677274f,0.526005f,0.828221f, + 0.413321f,0.305165f,0.223361f,0.778072f,0.198089f,0.414976f,0.007498f,0.464238f,0.785213f,0.534428f,0.060537f,0.572427f,0.693334f,0.865843f,0.034964f,0.586806f, + 0.161710f,0.203743f,0.656513f,0.604340f,0.688333f,0.257211f,0.246437f,0.338237f,0.839947f,0.268420f,0.913245f,0.759551f,0.289283f,0.347280f,0.508970f,0.361526f, + 0.554649f,0.086439f,0.024344f,0.661653f,0.988840f,0.110613f,0.129422f,0.405940f,0.781764f,0.303922f,0.521807f,0.236282f,0.277927f,0.699228f,0.733812f,0.772090f, + 0.658423f,0.056394f,0.153089f,0.536837f,0.792251f,0.165229f,0.592251f,0.228337f,0.147078f,0.116056f,0.319268f,0.293400f,0.872600f,0.842240f,0.306238f,0.228790f, + 0.745704f,0.821321f,0.778268f,0.611390f,0.969139f,0.297654f,0.367369f,0.815074f,0.985840f,0.693232f,0.411759f,0.366651f,0.345481f,0.609060f,0.778929f,0.640823f, + 0.340969f,0.328489f,0.898686f,0.952345f,0.272572f,0.758995f,0.111269f,0.613403f,0.864397f,0.607601f,0.357317f,0.227619f,0.177081f,0.773828f,0.318257f,0.298335f, + 0.679382f,0.454625f,0.976745f,0.244511f,0.880111f,0.046238f,0.451342f,0.709265f,0.784123f,0.488338f,0.228713f,0.041251f,0.077453f,0.718891f,0.454221f,0.039182f, + 0.614777f,0.538681f,0.856650f,0.888921f,0.184013f,0.487999f,0.880338f,0.726824f,0.112945f,0.835710f,0.943366f,0.340094f,0.167909f,0.241240f,0.125953f,0.460130f, + 0.789923f,0.313898f,0.640780f,0.795920f,0.198025f,0.407344f,0.673839f,0.414326f,0.185900f,0.353436f,0.786795f,0.422102f,0.133975f,0.363270f,0.393833f,0.748760f, + 0.328130f,0.115681f,0.253865f,0.526924f,0.672761f,0.517447f,0.686442f,0.532847f,0.551176f,0.667406f,0.382640f,0.408796f,0.649460f,0.613948f,0.600470f,0.485404f, + }; + + const UINT NumElements = SIZEOF_ARRAY(MersenneTwisterNumbers); + ASSERT(Index < NumElements); + return MersenneTwisterNumbers[Index % NumElements]; +} + +//-------------------------------------------------------------------------------- +GFSDK::SSAO::RandomTexture::RandomTexture() +{ + UINT k = 0; + for (UINT i = 0; i < SIZEOF_ARRAY(m_Jitters); ++i) + { + float r1 = GetRandomNumber(k++); + float r2 = GetRandomNumber(k++); + float r3 = GetRandomNumber(k++); + + // Use random rotation angles in [0,2PI/NUM_DIRECTIONS). + float angle = 2.0f * D3DX_PI * r1 / NUM_DIRECTIONS; + m_Jitters[i].X = cosf(angle); + m_Jitters[i].Y = sinf(angle); + m_Jitters[i].Z = r2; + m_Jitters[i].W = r3; + } +} + +#if ENABLE_DEBUG_MODES && SUPPORT_D3D11 + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::RandomTexture::Create(ID3D11Device* pD3DDevice) +{ + D3D11_TEXTURE2D_DESC texDesc; + texDesc.Width = RANDOM_TEXTURE_WIDTH; + texDesc.Height = RANDOM_TEXTURE_WIDTH; + texDesc.MipLevels = 1; + texDesc.ArraySize = 1; + texDesc.Format = DXGI_FORMAT_R32G32B32A32_FLOAT; + texDesc.SampleDesc.Count = 1; + texDesc.SampleDesc.Quality = 0; + texDesc.Usage = D3D11_USAGE_IMMUTABLE; + texDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE; + texDesc.CPUAccessFlags = 0; + texDesc.MiscFlags = 0; + + D3D11_SUBRESOURCE_DATA srd; + srd.pSysMem = m_Jitters; + srd.SysMemPitch = RANDOM_TEXTURE_WIDTH * sizeof(m_Jitters[0]); + srd.SysMemSlicePitch = 0; + + SAFE_RELEASE(pTexture); + SAFE_D3D_CALL( pD3DDevice->CreateTexture2D(&texDesc, &srd, &pTexture) ); + + SAFE_RELEASE(pSRV); + SAFE_D3D_CALL( pD3DDevice->CreateShaderResourceView(pTexture, NULL, &pSRV) ); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::RandomTexture::Release() +{ + SAFE_RELEASE(pSRV); + SAFE_RELEASE(pTexture); +} + +#endif // ENABLE_DEBUG_MODES && SUPPORT_D3D11 + +#if ENABLE_DEBUG_MODES && SUPPORT_D3D12 + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::RandomTexture::Create(ID3D12Device* pD3DDevice) +{ + D3D11_TEXTURE2D_DESC texDesc; + texDesc.Width = RANDOM_TEXTURE_WIDTH; + texDesc.Height = RANDOM_TEXTURE_WIDTH; + texDesc.MipLevels = 1; + texDesc.ArraySize = 1; + texDesc.Format = DXGI_FORMAT_R32G32B32A32_FLOAT; + texDesc.SampleDesc.Count = 1; + texDesc.SampleDesc.Quality = 0; + texDesc.Usage = D3D11_USAGE_IMMUTABLE; + texDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE; + texDesc.CPUAccessFlags = 0; + texDesc.MiscFlags = 0; + + D3D11_SUBRESOURCE_DATA srd; + srd.pSysMem = m_Jitters; + srd.SysMemPitch = RANDOM_TEXTURE_WIDTH * sizeof(m_Jitters[0]); + srd.SysMemSlicePitch = 0; + + SAFE_RELEASE(pTexture); + SAFE_D3D_CALL(pD3DDevice->CreateTexture2D(&texDesc, &srd, &pTexture)); + + SAFE_RELEASE(pSRV); + SAFE_D3D_CALL(pD3DDevice->CreateShaderResourceView(pTexture, NULL, &pSRV)); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::RandomTexture::Release() +{ + SAFE_RELEASE(pSRV); + SAFE_RELEASE(pTexture); +} + +#endif // ENABLE_DEBUG_MODES && SUPPORT_D3D12 diff --git a/src/RandomTexture.h b/src/RandomTexture.h new file mode 100644 index 0000000..f8afe98 --- /dev/null +++ b/src/RandomTexture.h @@ -0,0 +1,90 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#pragma once +#include "Common.h" + +namespace GFSDK +{ +namespace SSAO +{ + +//-------------------------------------------------------------------------------- +class RandomTexture +{ +public: + RandomTexture(); + + float4 GetJitter(UINT SliceId) + { + ASSERT(SliceId < SIZEOF_ARRAY(m_Jitters)); + return m_Jitters[SliceId % SIZEOF_ARRAY(m_Jitters)]; + } + + float GetRandomNumber(UINT Index); + +protected: + static const UINT MAX_MSAA_SAMPLE_COUNT = 8; + float4 m_Jitters[RANDOM_TEXTURE_WIDTH * RANDOM_TEXTURE_WIDTH * MAX_MSAA_SAMPLE_COUNT]; +}; + +#if SUPPORT_D3D11 +namespace D3D11 +{ + +//-------------------------------------------------------------------------------- +class RandomTexture : public SSAO::RandomTexture +{ +#if ENABLE_DEBUG_MODES +public: + RandomTexture() + : SSAO::RandomTexture() + , pTexture(NULL) + , pSRV(NULL) + { + } + + void Create(ID3D11Device* pD3DDevice); + void Release(); + ID3D11Texture2D* pTexture; + ID3D11ShaderResourceView* pSRV; +#endif +}; + +} // namespace D3D11 +#endif + +#if SUPPORT_D3D12 +namespace D3D12 +{ + +//-------------------------------------------------------------------------------- +class RandomTexture : public SSAO::RandomTexture +{ +#if ENABLE_DEBUG_MODES +public: + RandomTexture() + : SSAO::RandomTexture() + , pTexture(NULL) + { + } + + void Create(ID3D12Device* pD3DDevice); + void Release(); + ID3D12Resource* pTexture; //ID3D12Texture2D* pTexture; + GFSDK_SSAO_ShaderResourceView_D3D12 SRV; // ID3D12ShaderResourceView* pSRV; +#endif +}; + +} // namespace D3D12 +#endif + +} // namespace SSAO +} // namespace GFSDK diff --git a/src/RenderOptions.h b/src/RenderOptions.h new file mode 100644 index 0000000..bda89e8 --- /dev/null +++ b/src/RenderOptions.h @@ -0,0 +1,41 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#pragma once +#include "Common.h" + +namespace GFSDK +{ +namespace SSAO +{ + +//-------------------------------------------------------------------------------- +struct RenderOptions +{ + void SetRenderOptions(const GFSDK_SSAO_Parameters& Params) + { + DepthStorage = Params.DepthStorage; + DepthClampMode = Params.DepthClampMode; + Blur = Params.Blur; + EnableForegroundAO = Params.ForegroundAO.Enable; + EnableBackgroundAO = Params.BackgroundAO.Enable; + EnableDepthThreshold = Params.DepthThreshold.Enable; + } + + GFSDK_SSAO_DepthStorage DepthStorage; + GFSDK_SSAO_DepthClampMode DepthClampMode; + GFSDK_SSAO_BlurParameters Blur; + GFSDK_SSAO_BOOL EnableForegroundAO; + GFSDK_SSAO_BOOL EnableBackgroundAO; + GFSDK_SSAO_BOOL EnableDepthThreshold; +}; + +} // namespace SSAO +} // namespace GFSDK diff --git a/src/RenderTargets_DX11.h b/src/RenderTargets_DX11.h new file mode 100644 index 0000000..179c086 --- /dev/null +++ b/src/RenderTargets_DX11.h @@ -0,0 +1,324 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#if SUPPORT_D3D11 + +#pragma once +#include "Common.h" +#include "RenderOptions.h" + +namespace GFSDK +{ +namespace SSAO +{ +namespace D3D11 +{ + +//-------------------------------------------------------------------------------- +class RTTexture2D +{ +public: + ID3D11Texture2D* pTexture; + ID3D11RenderTargetView* pRTV; + ID3D11ShaderResourceView* pSRV; + UINT m_AllocatedSizeInBytes; + + RTTexture2D() + : pTexture(NULL) + , pRTV(NULL) + , pSRV(NULL) + , m_AllocatedSizeInBytes(0) + { + } + + UINT GetAllocatedSizeInBytes() + { + return m_AllocatedSizeInBytes; + } + + UINT GetFormatSizeInBytes(DXGI_FORMAT Format) + { + UINT NumBytes = 0; + switch (Format) + { + case DXGI_FORMAT_R16G16B16A16_FLOAT: + NumBytes = 8; + break; + case DXGI_FORMAT_R32_FLOAT: + case DXGI_FORMAT_R16G16_FLOAT: + case DXGI_FORMAT_R8G8B8A8_UNORM: + case DXGI_FORMAT_R11G11B10_FLOAT: + NumBytes = 4; + break; + case DXGI_FORMAT_R16_FLOAT: + NumBytes = 2; + break; + case DXGI_FORMAT_R8_UNORM: + NumBytes = 1; + break; + default: + ASSERT(0); + break; + } + return NumBytes; + } + + void CreateOnce(ID3D11Device* pDevice, UINT Width, UINT Height, DXGI_FORMAT Format, UINT ArraySize=1) + { + if (!pTexture) + { + D3D11_TEXTURE2D_DESC Desc; + Desc.Width = Width; + Desc.Height = Height; + Desc.Format = Format; + Desc.MipLevels = 1; + Desc.ArraySize = ArraySize; + Desc.SampleDesc.Count = 1; + Desc.SampleDesc.Quality = 0; + Desc.Usage = D3D11_USAGE_DEFAULT; + Desc.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET; + Desc.CPUAccessFlags = 0; + Desc.MiscFlags = 0; + + THROW_IF_FAILED(pDevice->CreateTexture2D(&Desc, NULL, &pTexture)); + THROW_IF_FAILED(pDevice->CreateShaderResourceView(pTexture, NULL, &pSRV)); + THROW_IF_FAILED(pDevice->CreateRenderTargetView(pTexture, NULL, &pRTV)); + + m_AllocatedSizeInBytes = Width * Height * ArraySize * GetFormatSizeInBytes(Format); + } + } + + void SafeRelease() + { + SAFE_RELEASE(pTexture); + SAFE_RELEASE(pRTV); + SAFE_RELEASE(pSRV); + + m_AllocatedSizeInBytes = 0; + } + + static UINT FormatSizeInBytes(DXGI_FORMAT Format); +}; + +//-------------------------------------------------------------------------------- +template +class RTTexture2DArray : public RTTexture2D +{ +public: + ID3D11RenderTargetView* pRTVs[ARRAY_SIZE]; + ID3D11ShaderResourceView* pSRVs[ARRAY_SIZE]; + + RTTexture2DArray() + : RTTexture2D() + { + ZERO_ARRAY(pRTVs); + ZERO_ARRAY(pSRVs); + } + + void CreateOnce(ID3D11Device* pDevice, UINT Width, UINT Height, DXGI_FORMAT Format); + void SafeRelease(); +}; + +//-------------------------------------------------------------------------------- +template +void RTTexture2DArray::CreateOnce(ID3D11Device* pDevice, UINT Width, UINT Height, DXGI_FORMAT Format) +{ + if (!pTexture) + { + RTTexture2D::CreateOnce(pDevice, Width, Height, Format, ARRAY_SIZE); + + for (UINT SliceId = 0; SliceId < SIZEOF_ARRAY(pRTVs); ++SliceId) + { + D3D11_RENDER_TARGET_VIEW_DESC Desc; + Desc.Format = Format; + Desc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DARRAY; + Desc.Texture2DArray.MipSlice = 0; + Desc.Texture2DArray.FirstArraySlice = SliceId; + Desc.Texture2DArray.ArraySize = 1; + + THROW_IF_FAILED(pDevice->CreateRenderTargetView(pTexture, &Desc, &pRTVs[SliceId])); + } + + for (UINT SliceId = 0; SliceId < SIZEOF_ARRAY(pSRVs); ++SliceId) + { + D3D11_SHADER_RESOURCE_VIEW_DESC Desc; + Desc.Format = Format; + Desc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2DARRAY; + Desc.Texture2DArray.MostDetailedMip = 0; + Desc.Texture2DArray.MipLevels = 1; + Desc.Texture2DArray.ArraySize = 1; + Desc.Texture2DArray.FirstArraySlice = SliceId; + + THROW_IF_FAILED(pDevice->CreateShaderResourceView(pTexture, &Desc, &pSRVs[SliceId])); + } + } +} + +//-------------------------------------------------------------------------------- +template +void RTTexture2DArray::SafeRelease() +{ + RTTexture2D::SafeRelease(); + + SAFE_RELEASE_ARRAY(pRTVs); + SAFE_RELEASE_ARRAY(pSRVs); +} + +//-------------------------------------------------------------------------------- +class RenderTargets +{ +public: + RenderTargets() : + m_pDevice(NULL) + , m_FullWidth(0) + , m_FullHeight(0) + { + } + + void ReleaseResources() + { + m_FullResAOZTexture.SafeRelease(); + m_FullResAOZTexture2.SafeRelease(); + m_FullResNormalTexture.SafeRelease(); + m_FullResViewDepthTexture.SafeRelease(); + m_QuarterResAOTextureArray.SafeRelease(); + m_QuarterResViewDepthTextureArray.SafeRelease(); + } + + void Release() + { + ReleaseResources(); + SAFE_RELEASE(m_pDevice); + } + + void SetDevice(ID3D11Device* pDevice) + { + m_pDevice = pDevice; + m_pDevice->AddRef(); + } + + void SetFullResolution(UINT Width, UINT Height) + { + m_FullWidth = Width; + m_FullHeight = Height; + } + + UINT GetFullWidth() + { + return m_FullWidth; + } + + UINT GetFullHeight() + { + return m_FullHeight; + } + + const RTTexture2D* GetFullResAOZTexture() + { + m_FullResAOZTexture.CreateOnce(m_pDevice, m_FullWidth, m_FullHeight, DXGI_FORMAT_R16G16_FLOAT); + return &m_FullResAOZTexture; + } + + const RTTexture2D* GetFullResAOZTexture2() + { + m_FullResAOZTexture2.CreateOnce(m_pDevice, m_FullWidth, m_FullHeight, DXGI_FORMAT_R16G16_FLOAT); + return &m_FullResAOZTexture2; + } + + const RTTexture2D* GetFullResViewDepthTexture() + { + m_FullResViewDepthTexture.CreateOnce(m_pDevice, m_FullWidth, m_FullHeight, DXGI_FORMAT_R32_FLOAT); + return &m_FullResViewDepthTexture; + } + + DXGI_FORMAT GetViewDepthTextureFormat(GFSDK_SSAO_DepthStorage DepthStorage) + { + return (DepthStorage == GFSDK_SSAO_FP16_VIEW_DEPTHS) ? DXGI_FORMAT_R16_FLOAT : DXGI_FORMAT_R32_FLOAT; + } + + const RTTexture2DArray<16>* GetQuarterResViewDepthTextureArray(const RenderOptions &Options) + { + m_QuarterResViewDepthTextureArray.CreateOnce(m_pDevice, iDivUp(m_FullWidth,4), iDivUp(m_FullHeight,4), GetViewDepthTextureFormat(Options.DepthStorage)); + return &m_QuarterResViewDepthTextureArray; + } + + const RTTexture2DArray<16>* GetQuarterResAOTextureArray() + { + m_QuarterResAOTextureArray.CreateOnce(m_pDevice, iDivUp(m_FullWidth,4), iDivUp(m_FullHeight,4), DXGI_FORMAT_R8_UNORM); + return &m_QuarterResAOTextureArray; + } + + const RTTexture2D* GetFullResNormalTexture() + { + m_FullResNormalTexture.CreateOnce(m_pDevice, m_FullWidth, m_FullHeight, DXGI_FORMAT_R8G8B8A8_UNORM); + return &m_FullResNormalTexture; + } + + void CreateOnceAll(const RenderOptions &Options) + { + GetFullResViewDepthTexture(); + GetFullResNormalTexture(); + GetQuarterResViewDepthTextureArray(Options); + GetQuarterResAOTextureArray(); + + if (Options.Blur.Enable) + { + GetFullResAOZTexture(); + GetFullResAOZTexture2(); + } + } + + GFSDK_SSAO_Status PreCreate(const RenderOptions &Options) + { +#if ENABLE_EXCEPTIONS + try + { + CreateOnceAll(Options); + } + catch (...) + { + ReleaseResources(); + + return GFSDK_SSAO_D3D_RESOURCE_CREATION_FAILED; + } +#else + CreateOnceAll(Options); +#endif + + return GFSDK_SSAO_OK; + } + + UINT GetCurrentAllocatedVideoMemoryBytes() + { + return m_FullResAOZTexture.GetAllocatedSizeInBytes() + + m_FullResAOZTexture2.GetAllocatedSizeInBytes() + + m_FullResNormalTexture.GetAllocatedSizeInBytes() + + m_FullResViewDepthTexture.GetAllocatedSizeInBytes() + + m_QuarterResAOTextureArray.GetAllocatedSizeInBytes() + + m_QuarterResViewDepthTextureArray.GetAllocatedSizeInBytes(); + } + +private: + ID3D11Device* m_pDevice; + UINT m_FullWidth; + UINT m_FullHeight; + RTTexture2D m_FullResAOZTexture; + RTTexture2D m_FullResAOZTexture2; + RTTexture2D m_FullResNormalTexture; + RTTexture2D m_FullResViewDepthTexture; + RTTexture2DArray<16> m_QuarterResAOTextureArray; + RTTexture2DArray<16> m_QuarterResViewDepthTextureArray; +}; + +} // namespace D3D11 +} // namespace SSAO +} // namespace GFSDK + +#endif // SUPPORT_D3D11 diff --git a/src/RenderTargets_DX12.h b/src/RenderTargets_DX12.h new file mode 100644 index 0000000..3599a87 --- /dev/null +++ b/src/RenderTargets_DX12.h @@ -0,0 +1,407 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#if SUPPORT_D3D12 + +#pragma once +#include "Common.h" +#include "RenderOptions.h" + +namespace GFSDK +{ +namespace SSAO +{ +namespace D3D12 +{ + +//-------------------------------------------------------------------------------- +class RTTexture2D +{ +public: + ID3D12Resource* pResource; // ID3D12Texture2D* pTexture; + ShaderResourceView SRV; + RenderTargetView RTV; + + UINT m_AllocatedSizeInBytes; + + RTTexture2D() + : pResource(nullptr) + , m_AllocatedSizeInBytes(0) + { + RTV.pResource = NULL; + SRV.pResource = NULL; +#if _WIN64 + RTV.CpuHandle.ptr = ~0ull; + SRV.GpuHandle.ptr = ~0ull; +#else + RTV.CpuHandle.ptr = ~0ul; + SRV.GpuHandle.ptr = ~0ul; +#endif + } + + UINT GetAllocatedSizeInBytes() + { + return m_AllocatedSizeInBytes; + } + + UINT GetFormatSizeInBytes(DXGI_FORMAT Format) + { + UINT NumBytes = 0; + switch (Format) + { + case DXGI_FORMAT_R16G16B16A16_FLOAT: + NumBytes = 8; + break; + case DXGI_FORMAT_R32_FLOAT: + case DXGI_FORMAT_R16G16_FLOAT: + case DXGI_FORMAT_R8G8B8A8_UNORM: + case DXGI_FORMAT_R11G11B10_FLOAT: + NumBytes = 4; + break; + case DXGI_FORMAT_R16_FLOAT: + NumBytes = 2; + break; + case DXGI_FORMAT_R8_UNORM: + NumBytes = 1; + break; + default: + ASSERT(0); + break; + } + return NumBytes; + } + + void CreateOnce(GFSDK_D3D12_GraphicsContext* pContext, UINT Width, UINT Height, DXGI_FORMAT Format, UINT BaseSRVHeapIndex, UINT BaseRTVHeapIndex, UINT ArraySize = 1) + { + if (!pResource) + { + // Create a texture 2D + D3D12_RESOURCE_DESC Desc = {}; + Desc.Dimension = D3D12_RESOURCE_DIMENSION_TEXTURE2D; + Desc.Width = Width; + Desc.Height = Height; + Desc.MipLevels = 1; + Desc.DepthOrArraySize = ArraySize; + Desc.SampleDesc.Count = 1; + Desc.SampleDesc.Quality = 0; + Desc.Flags = D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET; + Desc.Layout = D3D12_TEXTURE_LAYOUT_UNKNOWN; + Desc.Format = Format; + Desc.Alignment = 0; + + THROW_IF_FAILED(pContext->pDevice->CreateCommittedResource( + &CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_DEFAULT, pContext->NodeMask, pContext->NodeMask), D3D12_HEAP_FLAG_NONE, + &Desc, D3D12_RESOURCE_STATE_COMMON, nullptr, IID_PPV_ARGS(&pResource))); + + // SRV + SRV.pResource = pResource; + D3D12_SHADER_RESOURCE_VIEW_DESC DescSRV = {}; + DescSRV.Format = Format; + if (ArraySize > 1) + { + DescSRV.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2DARRAY; + DescSRV.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING; + DescSRV.Texture2DArray.ArraySize = ArraySize; + DescSRV.Texture2DArray.FirstArraySlice = 0; + DescSRV.Texture2DArray.MipLevels = 1; + DescSRV.Texture2DArray.MostDetailedMip = 0; + DescSRV.Texture2DArray.PlaneSlice = 0; + DescSRV.Texture2DArray.ResourceMinLODClamp = 0.0f; + } + else + { + DescSRV.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2D; + DescSRV.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING; + DescSRV.Texture2D.MipLevels = 1; + DescSRV.Texture2D.MostDetailedMip = 0; // No MIP + DescSRV.Texture2D.PlaneSlice = 0; + DescSRV.Texture2D.ResourceMinLODClamp = 0.0f; + } + D3D12_CPU_DESCRIPTOR_HANDLE CpuHandle = pContext->DescHeaps.CBVSRVUAV.GetCPUHandle(BaseSRVHeapIndex); + SRV.GpuHandle = pContext->DescHeaps.CBVSRVUAV.GetGPUHandle(BaseSRVHeapIndex); + pContext->pDevice->CreateShaderResourceView(pResource, &DescSRV, CpuHandle); + + // RTV + RTV.pResource = pResource; + D3D12_RENDER_TARGET_VIEW_DESC DescRTV = {}; + DescRTV.Format = Format; + if (ArraySize > 1) + { + DescRTV.ViewDimension = D3D12_RTV_DIMENSION_TEXTURE2DARRAY; + DescRTV.Texture2DArray.ArraySize = ArraySize; + DescRTV.Texture2DArray.FirstArraySlice = 0; + DescRTV.Texture2DArray.MipSlice = 0; + DescRTV.Texture2DArray.PlaneSlice = 0; + } + else + { + DescRTV.ViewDimension = D3D12_RTV_DIMENSION_TEXTURE2D; + DescRTV.Texture2D.MipSlice = 0; + DescRTV.Texture2D.PlaneSlice = 0; + } + + RTV.CpuHandle = pContext->DescHeaps.RTV.GetCPUHandle(BaseRTVHeapIndex); + + // Create the render target view + pContext->pDevice->CreateRenderTargetView(pResource, &DescRTV, RTV.CpuHandle); + + m_AllocatedSizeInBytes = Width * Height * ArraySize * GetFormatSizeInBytes(Format); + } + } + + void SafeRelease() + { + SAFE_RELEASE(pResource); + + m_AllocatedSizeInBytes = 0; + } +}; + +//-------------------------------------------------------------------------------- +template +class RTTexture2DArray : public RTTexture2D +{ +public: + ShaderResourceView SRVs[ARRAY_SIZE]; + RenderTargetView RTVs[ARRAY_SIZE]; + + RTTexture2DArray() + : RTTexture2D() + { + // @jihoc How to initialize handles? + ZERO_ARRAY(SRVs); + ZERO_ARRAY(RTVs); + } + + void CreateOnce(GFSDK_D3D12_GraphicsContext* pContext, UINT Width, UINT Height, DXGI_FORMAT Format, UINT BaseSRVHeapIndex, UINT BaseRTVHeapIndex); + void SafeRelease(); +}; + +//-------------------------------------------------------------------------------- +template +void RTTexture2DArray::CreateOnce(GFSDK_D3D12_GraphicsContext* pContext, UINT Width, UINT Height, DXGI_FORMAT Format, UINT BaseSRVHeapIndex, UINT BaseRTVHeapIndex) +{ + if (!pResource) + { + RTTexture2D::CreateOnce(pContext, Width, Height, Format, BaseSRVHeapIndex, BaseRTVHeapIndex, ARRAY_SIZE); + + for (UINT SliceId = 0; SliceId < SIZEOF_ARRAY(RTVs); ++SliceId) + { + RTVs[SliceId].pResource = pResource; +#if _WIN64 + RTVs[SliceId].CpuHandle.ptr = ~0ull; +#else + RTVs[SliceId].CpuHandle.ptr = ~0ul; +#endif + + D3D12_RENDER_TARGET_VIEW_DESC Desc = {}; + Desc.Format = Format; + Desc.ViewDimension = D3D12_RTV_DIMENSION_TEXTURE2DARRAY; + Desc.Texture2DArray.MipSlice = 0; + Desc.Texture2DArray.FirstArraySlice = SliceId; + Desc.Texture2DArray.ArraySize = 1; + + RTVs[SliceId].CpuHandle = pContext->DescHeaps.RTV.GetCPUHandle(BaseRTVHeapIndex + 1 + SliceId); + pContext->pDevice->CreateRenderTargetView(pResource, &Desc, RTVs[SliceId].CpuHandle); + } + + for (UINT SliceId = 0; SliceId < SIZEOF_ARRAY(SRVs); ++SliceId) + { + SRVs[SliceId].pResource = pResource; + //SRVs[SliceId].CpuHandle.ptr = ~0ull; + SRVs[SliceId].GpuHandle.ptr = ~0ull; + + D3D12_SHADER_RESOURCE_VIEW_DESC Desc = {}; + Desc.Format = Format; + Desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2DARRAY; + Desc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING; + Desc.Texture2DArray.MostDetailedMip = 0; + Desc.Texture2DArray.MipLevels = 1; + Desc.Texture2DArray.ArraySize = 1; + Desc.Texture2DArray.FirstArraySlice = SliceId; + + SRVs[SliceId].GpuHandle = pContext->DescHeaps.CBVSRVUAV.GetGPUHandle(BaseSRVHeapIndex + 1 + SliceId); + D3D12_CPU_DESCRIPTOR_HANDLE CpuHandle = pContext->DescHeaps.CBVSRVUAV.GetCPUHandle(BaseSRVHeapIndex + 1 + SliceId); + pContext->pDevice->CreateShaderResourceView(pResource, &Desc, CpuHandle); + } + } +} + +//-------------------------------------------------------------------------------- +template +void RTTexture2DArray::SafeRelease() +{ + RTTexture2D::SafeRelease(); +} + +//-------------------------------------------------------------------------------- +class RenderTargets +{ +public: + RenderTargets() : + m_pContext(nullptr) + , m_FullWidth(0) + , m_FullHeight(0) + { + } + + void ReleaseResources() + { + m_FullResAOZTexture.SafeRelease(); + m_FullResAOZTexture2.SafeRelease(); + m_FullResNormalTexture.SafeRelease(); + m_FullResViewDepthTexture.SafeRelease(); + m_QuarterResAOTextureArray.SafeRelease(); + m_QuarterResViewDepthTextureArray.SafeRelease(); + } + + void Release() + { + ReleaseResources(); + SAFE_RELEASE(m_pContext->pDevice); + } + + void SetGraphicsContext(GFSDK_D3D12_GraphicsContext* pContext) + { + m_pContext = pContext; + m_pContext->pDevice->AddRef(); + } + + void SetFullResolution(UINT Width, UINT Height) + { + m_FullWidth = Width; + m_FullHeight = Height; + } + + UINT GetFullWidth() + { + return m_FullWidth; + } + + UINT GetFullHeight() + { + return m_FullHeight; + } + +#if _DEBUG +#define SET_TEXTURE_DEBUG_NAME(Name) \ + m_##Name.pResource->SetName(L#Name); +#else +#define SET_TEXTURE_DEBUG_NAME(Name) +#endif + + const RTTexture2D* GetFullResAOZTexture() + { + m_FullResAOZTexture.CreateOnce(m_pContext, m_FullWidth, m_FullHeight, DXGI_FORMAT_R16G16_FLOAT, eFullResAOZTexture, eFullResAOZTextureRTV); + SET_TEXTURE_DEBUG_NAME(FullResAOZTexture); + return &m_FullResAOZTexture; + } + + const RTTexture2D* GetFullResAOZTexture2() + { + m_FullResAOZTexture2.CreateOnce(m_pContext, m_FullWidth, m_FullHeight, DXGI_FORMAT_R16G16_FLOAT, eFullResAOZTexture2, eFullResAOZTexture2RTV); + SET_TEXTURE_DEBUG_NAME(FullResAOZTexture2); + return &m_FullResAOZTexture2; + } + + const RTTexture2D* GetFullResViewDepthTexture() + { + m_FullResViewDepthTexture.CreateOnce(m_pContext, m_FullWidth, m_FullHeight, DXGI_FORMAT_R32_FLOAT, eFullResViewDepthTexture, eFullResViewDepthTextureRTV); + SET_TEXTURE_DEBUG_NAME(FullResViewDepthTexture); + return &m_FullResViewDepthTexture; + } + + DXGI_FORMAT GetViewDepthTextureFormat(GFSDK_SSAO_DepthStorage DepthStorage) + { + return (DepthStorage == GFSDK_SSAO_FP16_VIEW_DEPTHS) ? DXGI_FORMAT_R16_FLOAT : DXGI_FORMAT_R32_FLOAT; + } + + const RTTexture2DArray<16>* GetQuarterResViewDepthTextureArray(const RenderOptions &Options) + { + m_QuarterResViewDepthTextureArray.CreateOnce(m_pContext, iDivUp(m_FullWidth, 4), iDivUp(m_FullHeight, 4), GetViewDepthTextureFormat(Options.DepthStorage), eQuarterResViewDepthTextureArray, eQuarterResViewDepthTextureArrayRTV); + SET_TEXTURE_DEBUG_NAME(QuarterResViewDepthTextureArray); + return &m_QuarterResViewDepthTextureArray; + } + + const RTTexture2DArray<16>* GetQuarterResAOTextureArray() + { + m_QuarterResAOTextureArray.CreateOnce(m_pContext, iDivUp(m_FullWidth, 4), iDivUp(m_FullHeight, 4), DXGI_FORMAT_R8_UNORM, eQuarterResAOTextureArray, eQuarterResAOTextureArrayRTV); + SET_TEXTURE_DEBUG_NAME(QuarterResAOTextureArray); + return &m_QuarterResAOTextureArray; + } + + const RTTexture2D* GetFullResNormalTexture() + { + m_FullResNormalTexture.CreateOnce(m_pContext, m_FullWidth, m_FullHeight, DXGI_FORMAT_R8G8B8A8_UNORM, eFullResNormalTexture, eFullResNormalTextureRTV); + SET_TEXTURE_DEBUG_NAME(FullResNormalTexture); + return &m_FullResNormalTexture; + } + + void CreateOnceAll(const RenderOptions &Options) + { + GetFullResViewDepthTexture(); + GetFullResNormalTexture(); + GetQuarterResViewDepthTextureArray(Options); + GetQuarterResAOTextureArray(); + + if (Options.Blur.Enable) + { + GetFullResAOZTexture(); + GetFullResAOZTexture2(); + } + } + + GFSDK_SSAO_Status PreCreate(const RenderOptions &Options) + { +#if ENABLE_EXCEPTIONS + try + { + CreateOnceAll(Options); + } + catch (...) + { + ReleaseResources(); + + return GFSDK_SSAO_D3D_RESOURCE_CREATION_FAILED; + } +#else + CreateOnceAll(Options); +#endif + + return GFSDK_SSAO_OK; + } + + UINT GetCurrentAllocatedVideoMemoryBytes() + { + return m_FullResAOZTexture.GetAllocatedSizeInBytes() + + m_FullResAOZTexture2.GetAllocatedSizeInBytes() + + m_FullResNormalTexture.GetAllocatedSizeInBytes() + + m_FullResViewDepthTexture.GetAllocatedSizeInBytes() + + m_QuarterResAOTextureArray.GetAllocatedSizeInBytes() + + m_QuarterResViewDepthTextureArray.GetAllocatedSizeInBytes(); + } + +private: + GFSDK_D3D12_GraphicsContext* m_pContext; + UINT m_FullWidth; + UINT m_FullHeight; + RTTexture2D m_FullResAOZTexture; + RTTexture2D m_FullResAOZTexture2; + RTTexture2D m_FullResNormalTexture; + RTTexture2D m_FullResViewDepthTexture; + RTTexture2DArray<16> m_QuarterResAOTextureArray; + RTTexture2DArray<16> m_QuarterResViewDepthTextureArray; +}; + +} // namespace D3D12 +} // namespace SSAO +} // namespace GFSDK + +#endif // SUPPORT_D3D12 diff --git a/src/RenderTargets_GL.h b/src/RenderTargets_GL.h new file mode 100644 index 0000000..00661a7 --- /dev/null +++ b/src/RenderTargets_GL.h @@ -0,0 +1,403 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#if SUPPORT_GL + +#pragma once +#include "Common.h" +#include "RenderOptions.h" + +namespace GFSDK +{ +namespace SSAO +{ +namespace GL +{ + +//-------------------------------------------------------------------------------- +class BaseRTTexture +{ +public: + GLsizei m_AllocatedSizeInBytes; + + BaseRTTexture() + : m_AllocatedSizeInBytes(0) + { + } + + UINT GetAllocatedSizeInBytes() + { + return m_AllocatedSizeInBytes; + } + + static GLsizei GetFormatSizeInBytes(GLint InternalFormat) + { + switch (InternalFormat) + { + case GL_RG16F: + case GL_R32F: + case GL_RGBA8: + return 4; + case GL_R16F: + return 2; + case GL_R8: + return 1; + } + ASSERT(0); + return 0; + } + + static GLenum GetBaseGLFormat(GLint InternalFormat) + { + switch(InternalFormat) + { + case GL_R32F: + case GL_R16F: + case GL_R8: + return GL_RED; + case GL_RG16F: + return GL_RG; + case GL_RGBA8: + return GL_RGBA; + } + ASSERT(0); + return 0; + } + + static GLenum GetBaseGLType(GLint InternalFormat) + { + switch(InternalFormat) + { + case GL_R32F: + case GL_R16F: + case GL_RG16F: + return GL_FLOAT; + case GL_R8: + case GL_RGBA8: + return GL_UNSIGNED_BYTE; + } + ASSERT(0); + return 0; + } +}; + + + +//-------------------------------------------------------------------------------- +class RTTexture2D : public BaseRTTexture +{ +public: + RTTexture2D() + : BaseRTTexture() + , m_TextureId(0) + , m_FboId(0) + { + } + + void CreateOnce(const GFSDK_SSAO_GLFunctions& GL, GLsizei Width, GLsizei Height, GLint InternalFormat) + { + if (!m_TextureId) + { + GL.glGenTextures(1, &m_TextureId); + GL.glBindTexture(GL_TEXTURE_2D, m_TextureId); + GL.glTexImage2D(GL_TEXTURE_2D, 0, InternalFormat, Width, Height, 0, GetBaseGLFormat(InternalFormat), GetBaseGLType(InternalFormat), NULL); + GL.glBindTexture(GL_TEXTURE_2D, 0); + + THROW_IF(GL.glGetError()); + + GL.glGenFramebuffers(1, &m_FboId); + GL.glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_FboId); + GL.glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, m_TextureId, 0); + GL.glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); + + THROW_IF(GL.glGetError()); + + m_AllocatedSizeInBytes = Width * Height * GetFormatSizeInBytes(InternalFormat); + } + } + + void SafeRelease(const GFSDK_SSAO_GLFunctions& GL) + { + if (m_TextureId) + { + GL.glDeleteTextures(1, &m_TextureId); + m_TextureId = 0; + } + if (m_FboId) + { + GL.glDeleteFramebuffers(1, &m_FboId); + m_FboId = 0; + } + } + + GFSDK_SSAO_Texture_GL GetTexture() const + { + return GFSDK_SSAO_Texture_GL(GL_TEXTURE_2D, m_TextureId); + } + + GLuint GetFramebuffer() const + { + return m_FboId; + } + +private: + GLuint m_TextureId; + GLuint m_FboId; +}; + +//-------------------------------------------------------------------------------- +template +class RTTexture2DArray : public BaseRTTexture +{ +public: + RTTexture2DArray() + : BaseRTTexture() + , m_TextureArrayId(0) + , m_LayeredFboId(0) + { + ZERO_ARRAY(m_OctaSliceFbo); + ASSERT(MAX_NUM_MRTS == 8); + ASSERT(ARRAY_SIZE == 16); + } + + void CreateOnce(const GFSDK_SSAO_GLFunctions& GL, GLsizei Width, GLsizei Height, GLint InternalFormat) + { + if (!m_TextureArrayId) + { + GL.glGenTextures(1, &m_TextureArrayId); + GL.glBindTexture(GL_TEXTURE_2D_ARRAY, m_TextureArrayId); + GL.glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, InternalFormat, Width, Height, ARRAY_SIZE, 0, GetBaseGLFormat(InternalFormat), GetBaseGLType(InternalFormat), NULL); + GL.glBindTexture(GL_TEXTURE_2D_ARRAY, 0); + + THROW_IF(GL.glGetError()); + + m_AllocatedSizeInBytes = Width * Height * ARRAY_SIZE * GetFormatSizeInBytes(InternalFormat); + } + + if (!m_LayeredFboId) + { + GL.glGenFramebuffers(1, &m_LayeredFboId); + GL.glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_LayeredFboId); + GL.glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, m_TextureArrayId, 0); + GL.glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); + + THROW_IF(GL.glGetError()); + } + + if (!m_OctaSliceFbo[0]) + { + GLenum DrawBuffers[MAX_NUM_MRTS]; + for (UINT BufferIndex = 0; BufferIndex < MAX_NUM_MRTS; ++BufferIndex) + { + DrawBuffers[BufferIndex] = GL_COLOR_ATTACHMENT0 + BufferIndex; + } + + GL.glGenFramebuffers(2, m_OctaSliceFbo); + for (UINT PassIndex = 0; PassIndex < 2; ++PassIndex) + { + GL.glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_OctaSliceFbo[PassIndex]); + for (UINT RenderTargetId = 0; RenderTargetId < ARRAY_SIZE/2; ++RenderTargetId) + { + UINT LayerIndex = PassIndex * MAX_NUM_MRTS + RenderTargetId; + ASSERT(LayerIndex < ARRAY_SIZE); + GL.glFramebufferTextureLayer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + RenderTargetId, m_TextureArrayId, 0, LayerIndex); + } + GL.glDrawBuffers(MAX_NUM_MRTS, DrawBuffers); + GL.glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); + } + + THROW_IF(GL.glGetError()); + } + } + + void SafeRelease(const GFSDK_SSAO_GLFunctions& GL) + { + if (m_TextureArrayId) + { + GL.glDeleteTextures(1, &m_TextureArrayId); + m_TextureArrayId = 0; + } + if (m_LayeredFboId) + { + GL.glDeleteFramebuffers(1, &m_LayeredFboId); + m_LayeredFboId = 0; + } + if (m_OctaSliceFbo[0]) + { + GL.glDeleteFramebuffers(SIZEOF_ARRAY(m_OctaSliceFbo), m_OctaSliceFbo); + ZERO_ARRAY(m_OctaSliceFbo); + } + } + + GLuint GetTextureArray() const + { + return m_TextureArrayId; + } + + GLuint GetLayeredFramebuffer() const + { + return m_LayeredFboId; + } + + GLuint GetOctaSliceFramebuffer(UINT PassIndex) const + { + ASSERT(PassIndex < SIZEOF_ARRAY(m_OctaSliceFbo)); + return m_OctaSliceFbo[PassIndex]; + } + +private: + GLuint m_TextureArrayId; + GLuint m_LayeredFboId; + GLuint m_OctaSliceFbo[2]; +}; + +//-------------------------------------------------------------------------------- +class RenderTargets +{ +public: + RenderTargets() + : m_FullWidth(0) + , m_FullHeight(0) + { + } + + void ReleaseResources(const GFSDK_SSAO_GLFunctions& GL) + { + m_FullResAOZTexture.SafeRelease(GL); + m_FullResAOZTexture2.SafeRelease(GL); + m_FullResNormalTexture.SafeRelease(GL); + m_FullResViewDepthTexture.SafeRelease(GL); + m_QuarterResAOTextureArray.SafeRelease(GL); + m_QuarterResViewDepthTextureArray.SafeRelease(GL); + } + + void Release(const GFSDK_SSAO_GLFunctions& GL) + { + ReleaseResources(GL); + } + + void SetFullResolution(GLsizei Width, GLsizei Height) + { + m_FullWidth = Width; + m_FullHeight = Height; + } + + UINT GetFullWidth() + { + return UINT(m_FullWidth); + } + + UINT GetFullHeight() + { + return UINT(m_FullHeight); + } + + const RTTexture2D* GetFullResAOZTexture(const GFSDK_SSAO_GLFunctions& GL) + { + m_FullResAOZTexture.CreateOnce(GL, m_FullWidth, m_FullHeight, GL_RG16F); + return &m_FullResAOZTexture; + } + + const RTTexture2D* GetFullResAOZTexture2(const GFSDK_SSAO_GLFunctions& GL) + { + m_FullResAOZTexture2.CreateOnce(GL, m_FullWidth, m_FullHeight, GL_RG16F); + return &m_FullResAOZTexture2; + } + + const RTTexture2D* GetFullResViewDepthTexture(const GFSDK_SSAO_GLFunctions& GL) + { + m_FullResViewDepthTexture.CreateOnce(GL, m_FullWidth, m_FullHeight, GL_R32F); + return &m_FullResViewDepthTexture; + } + + GLint GetViewDepthTextureFormat(GFSDK_SSAO_DepthStorage DepthStorage) + { + return (DepthStorage == GFSDK_SSAO_FP16_VIEW_DEPTHS) ? GL_R16F : GL_R32F; + } + + const RTTexture2DArray<16>* GetQuarterResViewDepthTextureArray(const GFSDK_SSAO_GLFunctions& GL, const RenderOptions &Options) + { + m_QuarterResViewDepthTextureArray.CreateOnce(GL, iDivUp(m_FullWidth,4), iDivUp(m_FullHeight,4), GetViewDepthTextureFormat(Options.DepthStorage)); + return &m_QuarterResViewDepthTextureArray; + } + + const RTTexture2DArray<16>* GetQuarterResAOTextureArray(const GFSDK_SSAO_GLFunctions& GL) + { + m_QuarterResAOTextureArray.CreateOnce(GL, iDivUp(m_FullWidth,4), iDivUp(m_FullHeight,4), GL_R8); + return &m_QuarterResAOTextureArray; + } + + const RTTexture2D* GetFullResNormalTexture(const GFSDK_SSAO_GLFunctions& GL) + { + m_FullResNormalTexture.CreateOnce(GL, m_FullWidth, m_FullHeight, GL_RGBA8); + return &m_FullResNormalTexture; + } + + void CreateOnceAll(const GFSDK_SSAO_GLFunctions& GL, const RenderOptions &Options) + { + GetFullResViewDepthTexture(GL); + GetFullResNormalTexture(GL); + GetQuarterResViewDepthTextureArray(GL, Options); + GetQuarterResAOTextureArray(GL); + + if (Options.Blur.Enable) + { + GetFullResAOZTexture(GL); + GetFullResAOZTexture2(GL); + } + } + + GFSDK_SSAO_Status PreCreate(const GFSDK_SSAO_GLFunctions& GL, const RenderOptions &Options) + { +#if ENABLE_EXCEPTIONS + try + { + CreateOnceAll(GL, Options); + } + catch (...) + { + ReleaseResources(GL); + + return GFSDK_SSAO_GL_RESOURCE_CREATION_FAILED; + } +#else + CreateOnceAll(GL, Options); +#endif + + return GFSDK_SSAO_OK; + } + + UINT GetCurrentAllocatedVideoMemoryBytes() + { + return m_FullResAOZTexture.GetAllocatedSizeInBytes() + + m_FullResAOZTexture2.GetAllocatedSizeInBytes() + + m_FullResNormalTexture.GetAllocatedSizeInBytes() + + m_FullResViewDepthTexture.GetAllocatedSizeInBytes() + + m_QuarterResAOTextureArray.GetAllocatedSizeInBytes() + + m_QuarterResViewDepthTextureArray.GetAllocatedSizeInBytes(); + } + +private: + GLsizei m_FullWidth; + GLsizei m_FullHeight; + + RTTexture2D m_FullResAOZTexture; + RTTexture2D m_FullResAOZTexture2; + RTTexture2D m_FullResNormalTexture; + RTTexture2D m_FullResViewDepthTexture; + RTTexture2DArray<16> m_QuarterResAOTextureArray; + RTTexture2DArray<16> m_QuarterResViewDepthTextureArray; +}; + +} // namespace GL +} // namespace SSAO +} // namespace GFSDK + +#endif // SUPPORT_GL diff --git a/src/Renderer_DX11.cpp b/src/Renderer_DX11.cpp new file mode 100644 index 0000000..c255f79 --- /dev/null +++ b/src/Renderer_DX11.cpp @@ -0,0 +1,766 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#if SUPPORT_D3D11 + +#include "Renderer_DX11.h" + +#if ENABLE_RENDER_TIMES +GFSDK::SSAO::RenderTimes GFSDK::SSAO::D3D11::Renderer::s_RenderTimes; +#endif + +#if ENABLE_DEBUG_MODES +GFSDK::SSAO::D3D11::Renderer::ShaderType GFSDK::SSAO::D3D11::Renderer::s_AOShaderType = NVSDK_HBAO_PLUS_PS; +#endif + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::Renderer::CreateResources(ID3D11Device* pD3DDevice) +{ + m_States.Create(pD3DDevice); + m_Shaders.Create(pD3DDevice); +#if ENABLE_RENDER_TIMES + m_TimestampQueries.Create(pD3DDevice); +#endif +#if ENABLE_DEBUG_MODES + m_RandomTexture.Create(pD3DDevice); + m_DebugShaders.Create(pD3DDevice); +#endif + m_GlobalCB.Create(pD3DDevice); + m_PerPassCBs.Create(pD3DDevice); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::Renderer::ReleaseResources() +{ + m_States.Release(); + m_Shaders.Release(); + m_RTs.Release(); +#if ENABLE_RENDER_TIMES + m_TimestampQueries.Release(); +#endif +#if ENABLE_DEBUG_MODES + m_RandomTexture.Release(); + m_DebugShaders.Release(); +#endif + m_GlobalCB.Release(); + m_PerPassCBs.Release(); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::Renderer::DrawLinearDepthPS(ID3D11DeviceContext* pDeviceContext) +{ +#if ENABLE_PERF_MARKERS + PERF_MARKER_SCOPE(L"DrawLinearDepthPS"); +#endif + +#if ENABLE_RENDER_TIMES + GPU_TIMER_SCOPE(LINEAR_Z); +#endif + + if (m_InputDepth.DepthTextureType == GFSDK_SSAO_VIEW_DEPTHS && + m_InputDepth.Texture.SampleCount == 1 && + m_InputDepth.Viewport.RectCoversFullInputTexture) + { + m_FullResViewDepthSRV = m_InputDepth.Texture.pSRV; + return; + } + + { + ID3D11PixelShader* pPS = (m_InputDepth.DepthTextureType == GFSDK_SSAO_VIEW_DEPTHS) ? + m_Shaders.CopyDepth_PS.Get(GetResolveDepthPermutation()) : + m_Shaders.LinearizeDepth_PS.Get(GetResolveDepthPermutation()); + + pDeviceContext->OMSetRenderTargets(1, &m_RTs.GetFullResViewDepthTexture()->pRTV, NULL); + pDeviceContext->RSSetViewports(1, &m_Viewports.FullRes); + pDeviceContext->PSSetShader(pPS, NULL, 0); + pDeviceContext->PSSetShaderResources(0, 1, &m_InputDepth.Texture.pSRV); + + pDeviceContext->Draw(3, 0); + + m_FullResViewDepthSRV = m_RTs.GetFullResViewDepthTexture()->pSRV; + } +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::Renderer::DrawDeinterleavedDepthPS(ID3D11DeviceContext* pDeviceContext) +{ +#if ENABLE_PERF_MARKERS + PERF_MARKER_SCOPE(L"DrawDeinterleavedDepthPS"); +#endif + +#if ENABLE_RENDER_TIMES + GPU_TIMER_SCOPE(DEINTERLEAVE_Z); +#endif + + pDeviceContext->RSSetViewports(1, &m_Viewports.QuarterRes); + pDeviceContext->PSSetShader(m_Shaders.DeinterleaveDepth_PS.Get(), NULL, 0); + pDeviceContext->PSSetSamplers(0, 1, &m_States.GetSamplerStatePointClamp()); + + for (UINT SliceIndex = 0; SliceIndex < 16; SliceIndex += MAX_NUM_MRTS) + { + pDeviceContext->OMSetRenderTargets(MAX_NUM_MRTS, &m_RTs.GetQuarterResViewDepthTextureArray(m_Options)->pRTVs[SliceIndex], NULL); + pDeviceContext->PSSetShaderResources(0, 1, &m_FullResViewDepthSRV); + pDeviceContext->PSSetConstantBuffers(1, 1, &m_PerPassCBs.GetCB(SliceIndex)); + + pDeviceContext->Draw(3, 0); + } +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::Renderer::DrawReconstructedNormalPS(ID3D11DeviceContext* pDeviceContext) +{ +#if ENABLE_PERF_MARKERS + PERF_MARKER_SCOPE(L"DrawReconstructedNormalPS"); +#endif + +#if ENABLE_RENDER_TIMES + GPU_TIMER_SCOPE(NORMAL); +#endif + + pDeviceContext->OMSetRenderTargets(1, &m_RTs.GetFullResNormalTexture()->pRTV, NULL); + pDeviceContext->RSSetViewports(1, &m_Viewports.FullRes); + + pDeviceContext->PSSetShader(m_Shaders.ReconstructNormal_PS.Get(), NULL, 0); + pDeviceContext->PSSetSamplers(0, 1, &GetAODepthSamplerState()); + pDeviceContext->PSSetShaderResources(0, 1, &m_FullResViewDepthSRV); + + pDeviceContext->Draw(3, 0); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::Renderer::DrawDebugNormalsPS(ID3D11DeviceContext* pDeviceContext) +{ +#if ENABLE_PERF_MARKERS + PERF_MARKER_SCOPE(L"DrawDebugNormalsPS"); +#endif + +#if ENABLE_RENDER_TIMES + GPU_TIMER_SCOPE(NORMAL); +#endif + + ID3D11ShaderResourceView* pSRVs[] = + { + m_FullResViewDepthSRV, + m_InputNormal.Texture.pSRV + }; + + pDeviceContext->OMSetBlendState(m_States.GetBlendStateDisabled(), NULL, GetOutputMSAASampleMask()); + + pDeviceContext->OMSetRenderTargets(1, &m_Output.RenderTarget.pRTV, NULL); + pDeviceContext->RSSetViewports(1, &m_InputDepth.Viewport); + + pDeviceContext->PSSetShader(m_Shaders.DebugNormals_PS.Get(GetFetchNormalPermutation()), NULL, 0); + pDeviceContext->PSSetSamplers(0, 1, &GetAODepthSamplerState()); + pDeviceContext->PSSetShaderResources(0, SIZEOF_ARRAY(pSRVs), pSRVs); + + pDeviceContext->Draw(3, 0); +} + +#if ENABLE_DEBUG_MODES + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::Renderer::DrawFullResAOPS(ID3D11DeviceContext* pDeviceContext) +{ +#if ENABLE_RENDER_TIMES + GPU_TIMER_SCOPE(COARSE_AO); +#endif + + if (m_Options.Blur.Enable) + { + pDeviceContext->OMSetRenderTargets(1, &m_RTs.GetFullResAOZTexture2()->pRTV, NULL); + pDeviceContext->RSSetViewports(1, &m_Viewports.FullRes); + } + else + { + pDeviceContext->OMSetDepthStencilState(GetOutputDepthStencilState(), GetOutputDepthStencilRef()); + pDeviceContext->OMSetBlendState(GetOutputBlendState(), GetOutputBlendFactor(), GetOutputMSAASampleMask()); + pDeviceContext->OMSetRenderTargets(1, &m_Output.RenderTarget.pRTV, GetOutputDepthStencilView()); + pDeviceContext->RSSetViewports(1, &m_InputDepth.Viewport); + } + + ID3D11ShaderResourceView* pSRVs[] = + { + m_FullResViewDepthSRV, + m_RandomTexture.pSRV + }; + + ID3D11SamplerState* pSamplers[] = + { + pSamplers[0] = m_States.GetSamplerStatePointClamp(), + pSamplers[1] = m_States.GetSamplerStatePointWrap() + }; + + pDeviceContext->PSSetShader(m_DebugShaders.DebugAO_PS.Get(GetEnableBlurPermutation()), NULL, 0); + pDeviceContext->PSSetShaderResources(0, SIZEOF_ARRAY(pSRVs), pSRVs); + pDeviceContext->PSSetSamplers(0, SIZEOF_ARRAY(pSamplers), pSamplers); + pDeviceContext->Draw(3, 0); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::Renderer::RenderDebugAO(ID3D11DeviceContext* pDeviceContext) +{ + DrawLinearDepthPS(pDeviceContext); + DrawFullResAOPS(pDeviceContext); + + if (m_Options.Blur.Enable) + { + DrawBlurXPS(pDeviceContext); + DrawBlurYPS(pDeviceContext); + } +} + +#endif // ENABLE_DEBUG_MODES + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::Renderer::DrawCoarseAOPS(ID3D11DeviceContext* pDeviceContext) +{ +#if ENABLE_PERF_MARKERS + PERF_MARKER_SCOPE(L"DrawCoarseAOPS"); +#endif + +#if ENABLE_RENDER_TIMES + GPU_TIMER_SCOPE(COARSE_AO); +#endif + + pDeviceContext->GSSetShader(m_Shaders.CoarseAO_GS.Get(), NULL, 0); + + ID3D11RenderTargetView* pOutputBufferRTV = m_RTs.GetQuarterResAOTextureArray()->pRTV; + pDeviceContext->OMSetRenderTargets(1, &pOutputBufferRTV, NULL); + + pDeviceContext->RSSetViewports(1, &m_Viewports.QuarterRes); + pDeviceContext->PSSetSamplers(0, 1, &GetAODepthSamplerState()); + pDeviceContext->PSSetShader(m_Shaders.CoarseAO_PS.Get(GetEnableForegroundAOPermutation(), GetEnableBackgroundAOPermutation(), GetEnableDepthThresholdPermutation(), GetFetchNormalPermutation()), NULL, 0); + + for (UINT SliceIndex = 0; SliceIndex < 16; ++SliceIndex) + { + ID3D11ShaderResourceView* pSRVs[] = + { + m_RTs.GetQuarterResViewDepthTextureArray(m_Options)->pSRVs[SliceIndex], + GetFullResNormalBufferSRV() + }; + pDeviceContext->PSSetShaderResources(0, SIZEOF_ARRAY(pSRVs), pSRVs); + + ID3D11Buffer *PerPassCB = m_PerPassCBs.GetCB(SliceIndex); + pDeviceContext->GSSetConstantBuffers(1, 1, &PerPassCB); + pDeviceContext->PSSetConstantBuffers(1, 1, &PerPassCB); + + pDeviceContext->Draw(3, 0); + } + + pDeviceContext->GSSetShader(NULL, NULL, 0); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::Renderer::DrawReinterleavedAOPS(ID3D11DeviceContext* pDeviceContext) +{ +#if ENABLE_PERF_MARKERS + PERF_MARKER_SCOPE(L"DrawReinterleavedAOPS"); +#endif + +#if ENABLE_RENDER_TIMES + GPU_TIMER_SCOPE(INTERLEAVE_AO); +#endif + + ASSERT(!m_Options.Blur.Enable); + + for (UINT PassIndex = 0; PassIndex < m_Output.BlendPassCount; ++PassIndex) + { + const BlendPassEnumType BlendPass = GetBlendPassEnum(PassIndex); + + pDeviceContext->OMSetDepthStencilState(GetOutputDepthStencilState(BlendPass), GetOutputDepthStencilRef(BlendPass)); + pDeviceContext->OMSetBlendState(GetOutputBlendState(BlendPass), GetOutputBlendFactor(BlendPass), GetOutputMSAASampleMask()); + pDeviceContext->OMSetRenderTargets(1, &m_Output.RenderTarget.pRTV, GetOutputDepthStencilView()); + pDeviceContext->RSSetViewports(1, &m_InputDepth.Viewport); + + pDeviceContext->PSSetShaderResources(0, 1, &m_RTs.GetQuarterResAOTextureArray()->pSRV); + pDeviceContext->PSSetSamplers(0, 1, &m_States.GetSamplerStatePointClamp()); + pDeviceContext->PSSetShader(m_Shaders.ReinterleaveAO_PS.Get(GetEnableBlurPermutation()), NULL, 0); + + pDeviceContext->Draw(3, 0); + } +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::Renderer::DrawReinterleavedAOPS_PreBlur(ID3D11DeviceContext* pDeviceContext) +{ +#if ENABLE_PERF_MARKERS + PERF_MARKER_SCOPE(L"DrawReinterleavedAOPS"); +#endif + +#if ENABLE_RENDER_TIMES + GPU_TIMER_SCOPE(INTERLEAVE_AO); +#endif + + ASSERT(m_Options.Blur.Enable); + + ID3D11ShaderResourceView* pSRVs[] = + { + m_RTs.GetQuarterResAOTextureArray()->pSRV, + m_FullResViewDepthSRV + }; + + pDeviceContext->OMSetRenderTargets(1, &m_RTs.GetFullResAOZTexture2()->pRTV, NULL); + pDeviceContext->RSSetViewports(1, &m_Viewports.FullRes); + + pDeviceContext->PSSetShaderResources(0, SIZEOF_ARRAY(pSRVs), pSRVs); + pDeviceContext->PSSetSamplers(0, 1, &m_States.GetSamplerStatePointClamp()); + pDeviceContext->PSSetShader(m_Shaders.ReinterleaveAO_PS.Get(GetEnableBlurPermutation()), NULL, 0); + + pDeviceContext->Draw(3, 0); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::Renderer::DrawBlurXPS(ID3D11DeviceContext* pDeviceContext) +{ +#if ENABLE_PERF_MARKERS + PERF_MARKER_SCOPE(L"DrawBlurXPS"); +#endif + +#if ENABLE_RENDER_TIMES + GPU_TIMER_SCOPE(BLURX); +#endif + + ID3D11SamplerState* pSamplers[] = + { + m_States.GetSamplerStatePointClamp(), + m_States.GetSamplerStateLinearClamp() + }; + + pDeviceContext->OMSetRenderTargets(1, &m_RTs.GetFullResAOZTexture()->pRTV, NULL); + pDeviceContext->RSSetViewports(1, &m_Viewports.FullRes); + + pDeviceContext->PSSetShader(m_Shaders.BlurX_PS.Get(GetEnableSharpnessProfilePermutation(), GetBlurKernelRadiusPermutation()), NULL, 0); + pDeviceContext->PSSetShaderResources(0, 1, &m_RTs.GetFullResAOZTexture2()->pSRV); + pDeviceContext->PSSetSamplers(0, SIZEOF_ARRAY(pSamplers), pSamplers); + + pDeviceContext->Draw(3, 0); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::Renderer::DrawBlurYPS(ID3D11DeviceContext* pDeviceContext) +{ +#if ENABLE_PERF_MARKERS + PERF_MARKER_SCOPE(L"DrawBlurYPS"); +#endif + +#if ENABLE_RENDER_TIMES + GPU_TIMER_SCOPE(BLURY); +#endif + + for (UINT PassIndex = 0; PassIndex < m_Output.BlendPassCount; ++PassIndex) + { + const BlendPassEnumType BlendPass = GetBlendPassEnum(PassIndex); + + pDeviceContext->OMSetDepthStencilState(GetOutputDepthStencilState(BlendPass), GetOutputDepthStencilRef(BlendPass)); + pDeviceContext->OMSetBlendState(GetOutputBlendState(BlendPass), GetOutputBlendFactor(BlendPass), GetOutputMSAASampleMask()); + + pDeviceContext->OMSetRenderTargets(1, &m_Output.RenderTarget.pRTV, GetOutputDepthStencilView()); + pDeviceContext->RSSetViewports(1, &m_InputDepth.Viewport); + + pDeviceContext->PSSetShader(m_Shaders.BlurY_PS.Get(GetEnableSharpnessProfilePermutation(), GetBlurKernelRadiusPermutation()), NULL, 0); + pDeviceContext->PSSetShaderResources(0, 1, &m_RTs.GetFullResAOZTexture()->pSRV); + + pDeviceContext->Draw(3, 0); + } +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::Renderer::SetFullscreenState(ID3D11DeviceContext* pDeviceContext) +{ + GFSDK::SSAO::D3D11::AppState::UnbindSRVs(pDeviceContext); + + pDeviceContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); + pDeviceContext->IASetInputLayout(NULL); + + pDeviceContext->RSSetState(m_States.GetRasterizerStateFullscreenNoScissor()); + pDeviceContext->RSSetViewports(1, &m_Viewports.FullRes); + + pDeviceContext->VSSetShader(m_Shaders.FullScreenTriangle_VS.Get(), NULL, 0); + pDeviceContext->HSSetShader(NULL, NULL, 0); + pDeviceContext->DSSetShader(NULL, NULL, 0); + pDeviceContext->GSSetShader(NULL, NULL, 0); + pDeviceContext->CSSetShader(NULL, NULL, 0); + + pDeviceContext->PSSetConstantBuffers(0, 1, &m_GlobalCB.GetCB()); + pDeviceContext->PSSetSamplers(0, 1, &m_States.GetSamplerStatePointClamp()); + + pDeviceContext->OMSetDepthStencilState(m_States.GetDepthStencilStateDisabled(), 0x0); + pDeviceContext->OMSetBlendState(m_States.GetBlendStateDisabled(), NULL, 0xFFFFFFFF); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::Renderer::RenderHBAOPlus(ID3D11DeviceContext* pDeviceContext, GFSDK_SSAO_RenderMask RenderMask) +{ + if (RenderMask & GFSDK_SSAO_DRAW_Z) + { + DrawLinearDepthPS(pDeviceContext); + } + + if (RenderMask & GFSDK_SSAO_DRAW_DEBUG_N) + { + DrawDebugNormalsPS(pDeviceContext); + } + + if (RenderMask & GFSDK_SSAO_DRAW_AO) + { + DrawDeinterleavedDepthPS(pDeviceContext); + + if (!m_InputNormal.Texture.IsSet()) + { + DrawReconstructedNormalPS(pDeviceContext); + } + + DrawCoarseAOPS(pDeviceContext); + + if (m_Options.Blur.Enable) + { + DrawReinterleavedAOPS_PreBlur(pDeviceContext); + DrawBlurXPS(pDeviceContext); + DrawBlurYPS(pDeviceContext); + } + else + { + DrawReinterleavedAOPS(pDeviceContext); + } + } +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::Renderer::Render(ID3D11DeviceContext* pDeviceContext, GFSDK_SSAO_RenderMask RenderMask) +{ +#if ENABLE_PERF_MARKERS + PERF_MARKER_SCOPE(L"HBAO+"); +#endif + +#if ENABLE_RENDER_TIMES + GPU_TIMER_SCOPE(TOTAL); +#endif + + m_GlobalCB.UpdateBuffer(pDeviceContext, RenderMask); + + SetFullscreenState(pDeviceContext); + +#if ENABLE_DEBUG_MODES + if (s_AOShaderType != NVSDK_HBAO_PLUS_PS) + { + RenderDebugAO(pDeviceContext); + } + else +#endif + { + RenderHBAOPlus(pDeviceContext, RenderMask); + } +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::Renderer::SetAOResolution(UINT Width, UINT Height) +{ + if (Width != m_RTs.GetFullWidth() || + Height != m_RTs.GetFullHeight()) + { + m_RTs.ReleaseResources(); + m_RTs.SetFullResolution(Width, Height); + m_Viewports.SetFullResolution(Width, Height); + m_GlobalCB.SetResolutionConstants(m_Viewports); + } +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::Renderer::SetAOResolution(const SSAO::InputViewport &Viewport) +{ + SetAOResolution(UINT(Viewport.Width), UINT(Viewport.Height)); +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::D3D11::Renderer::PreCreateRTs( + const GFSDK_SSAO_Parameters& Parameters, + UINT ViewportWidth, + UINT ViewportHeight) +{ + SetAOResolution(ViewportWidth, ViewportHeight); + + m_Options.SetRenderOptions(Parameters); + + return m_RTs.PreCreate(m_Options); +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::D3D11::Renderer::GetProjectionMatrixDepthRange( + const GFSDK_SSAO_InputData_D3D11& InputData, + GFSDK_SSAO_ProjectionMatrixDepthRange& OutputDepthRange) +{ + GFSDK_SSAO_Status Status; + + SSAO::ProjectionMatrixInfo ProjectionMatrixInfo; + Status = ProjectionMatrixInfo.Init(InputData.DepthData.ProjectionMatrix, API_D3D11); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + ProjectionMatrixInfo.GetDepthRange(&OutputDepthRange); + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::D3D11::Renderer::RenderAO( + ID3D11DeviceContext* pDeviceContext, + const GFSDK_SSAO_InputData_D3D11& InputData, + const GFSDK_SSAO_Parameters& Parameters, + const GFSDK_SSAO_Output_D3D11& Output, + GFSDK_SSAO_RenderMask RenderMask) +{ + GFSDK_SSAO_Status Status; + + if (!pDeviceContext) + { + return GFSDK_SSAO_NULL_ARGUMENT; + } + + Status = SetDataFlow(InputData, Parameters, Output); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + Status = m_RTs.PreCreate(m_Options); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + GFSDK::SSAO::D3D11::AppState AppState; + AppState.Save(pDeviceContext); + +#if ENABLE_RENDER_TIMES + m_TimestampQueries.Begin(pDeviceContext); +#endif + + Render(pDeviceContext, RenderMask); + +#if ENABLE_RENDER_TIMES + m_TimestampQueries.End(pDeviceContext, &s_RenderTimes); +#endif + + AppState.Restore(pDeviceContext); + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::D3D11::Renderer::SetInputData(const GFSDK_SSAO_InputData_D3D11& InputData) +{ + GFSDK_SSAO_Status Status; + + Status = SetInputDepths(InputData.DepthData); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + Status = SetInputNormals(InputData.NormalData); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::D3D11::Renderer::SetDataFlow( + const GFSDK_SSAO_InputData_D3D11& InputData, + const GFSDK_SSAO_Parameters& Parameters, + const GFSDK_SSAO_Output_D3D11& Output) +{ + GFSDK_SSAO_Status Status; + + Status = SetInputData(InputData); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + Status = SetAOParameters(Parameters); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + Status = SetOutput(Output); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + Status = ValidateDataFlow(); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::D3D11::Renderer::SetInputDepths(const GFSDK_SSAO_InputDepthData_D3D11& DepthData) +{ + m_InputDepth = GFSDK::SSAO::D3D11::InputDepthInfo(); + + GFSDK_SSAO_Status Status = m_InputDepth.SetData(DepthData); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + m_GlobalCB.SetDepthData(m_InputDepth); + + SetAOResolution(m_InputDepth.Viewport); + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::D3D11::Renderer::SetInputNormals(const GFSDK_SSAO_InputNormalData_D3D11& NormalData) +{ + m_InputNormal = GFSDK::SSAO::D3D11::InputNormalInfo(); + + if (!NormalData.Enable) + { + // Input normals disabled. In this case, the lib reconstructs normals from depths. + return GFSDK_SSAO_OK; + } + + GFSDK_SSAO_Status Status = m_InputNormal.SetData(NormalData); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + m_GlobalCB.SetNormalData(NormalData); + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::D3D11::Renderer::SetOutput(const GFSDK_SSAO_Output_D3D11& Output) +{ + m_Output = GFSDK::SSAO::D3D11::OutputInfo(); + + GFSDK_SSAO_Status Status = m_Output.Init(Output); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::D3D11::Renderer::ValidateDataFlow() +{ + if (m_InputNormal.Texture.IsSet()) + { + if (m_InputNormal.Texture.Width != m_InputDepth.Texture.Width || + m_InputNormal.Texture.Height != m_InputDepth.Texture.Height) + { + return GFSDK_SSAO_INVALID_NORMAL_TEXTURE_RESOLUTION; + } + if (m_InputNormal.Texture.SampleCount != m_InputDepth.Texture.SampleCount) + { + return GFSDK_SSAO_INVALID_NORMAL_TEXTURE_SAMPLE_COUNT; + } + } + + if (m_Output.DepthStencilBuffer.IsSet()) + { + if (m_Output.RenderTarget.Width != m_Output.DepthStencilBuffer.Width || + m_Output.RenderTarget.Height != m_Output.DepthStencilBuffer.Height) + { + return GFSDK_SSAO_INVALID_DEPTH_STENCIL_RESOLUTION; + } + if (m_Output.RenderTarget.SampleCount != m_Output.DepthStencilBuffer.SampleCount) + { + return GFSDK_SSAO_INVALID_DEPTH_STENCIL_SAMPLE_COUNT; + } + } + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::D3D11::Renderer::SetAOParameters(const GFSDK_SSAO_Parameters& Params) +{ + if (Params.Blur.Enable != m_Options.Blur.Enable || + Params.DepthStorage != m_Options.DepthStorage) + { + m_RTs.ReleaseResources(); + } + + m_GlobalCB.SetAOParameters(Params, m_InputDepth); + m_Options.SetRenderOptions(Params); + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::D3D11::Renderer::Create(ID3D11Device* pD3DDevice, GFSDK_SSAO_Version HeaderVersion) +{ + if (!m_BuildVersion.Match(HeaderVersion)) + { + return GFSDK_SSAO_VERSION_MISMATCH; + } + + if (pD3DDevice->GetFeatureLevel() < D3D_FEATURE_LEVEL_11_0) + { + return GFSDK_SSAO_D3D_FEATURE_LEVEL_NOT_SUPPORTED; + } + + if (!pD3DDevice) + { + return GFSDK_SSAO_NULL_ARGUMENT; + } + +#if ENABLE_EXCEPTIONS + try + { + CreateResources(pD3DDevice); + } + catch (...) + { + ReleaseResources(); + + return GFSDK_SSAO_D3D_RESOURCE_CREATION_FAILED; + } +#else + CreateResources(pD3DDevice); +#endif + + m_RTs.SetDevice(pD3DDevice); + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::Renderer::Release() +{ + ReleaseResources(); + + m_NewDelete.delete_(this); +} + +//-------------------------------------------------------------------------------- +UINT GFSDK::SSAO::D3D11::Renderer::GetAllocatedVideoMemoryBytes() +{ + return m_RTs.GetCurrentAllocatedVideoMemoryBytes(); +} + +#endif // SUPPORT_D3D11 diff --git a/src/Renderer_DX11.h b/src/Renderer_DX11.h new file mode 100644 index 0000000..2e602af --- /dev/null +++ b/src/Renderer_DX11.h @@ -0,0 +1,242 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#pragma once +#include "Common.h" +#include "ConstantBuffers.h" +#include "InputDepthInfo.h" +#include "InputNormalInfo.h" +#include "OutputInfo.h" +#include "ProjectionMatrixInfo.h" +#include "RandomTexture.h" +#include "RenderOptions.h" +#include "RenderTargets_DX11.h" +#include "Shaders_DX11.h" +#include "States_DX11.h" +#include "AppState_DX11.h" +#include "TimestampQueries.h" +#include "BuildVersion.h" +#include "PerfMarkers.h" + +namespace GFSDK +{ +namespace SSAO +{ + +//-------------------------------------------------------------------------------- +#if SUPPORT_D3D11 + +namespace D3D11 +{ + +class Renderer : public GFSDK_SSAO_Context_D3D11 +{ +public: + Renderer(GFSDK_SSAO_CustomHeap NewDelete) + : m_FullResViewDepthSRV(NULL) + , m_NewDelete(NewDelete) + { + } + + // + // API + // + + GFSDK_SSAO_Status Create(ID3D11Device* pD3DDevice, GFSDK_SSAO_Version HeaderVersion); + + void Release(); + + GFSDK_SSAO_Status PreCreateRTs( + const GFSDK_SSAO_Parameters& Parameters, + UINT ViewportWidth, + UINT ViewportHeight); + + GFSDK_SSAO_Status GetProjectionMatrixDepthRange( + const GFSDK_SSAO_InputData_D3D11& InputData, + GFSDK_SSAO_ProjectionMatrixDepthRange& OutputDepthRange); + + GFSDK_SSAO_Status RenderAO( + ID3D11DeviceContext* pDeviceContext, + const GFSDK_SSAO_InputData_D3D11& InputData, + const GFSDK_SSAO_Parameters& Parameters, + const GFSDK_SSAO_Output_D3D11& Output, + GFSDK_SSAO_RenderMask RenderMask = GFSDK_SSAO_RENDER_AO); + + UINT GetAllocatedVideoMemoryBytes(); + + // + // Internals + // + +#if ENABLE_RENDER_TIMES + static GFSDK::SSAO::RenderTimes s_RenderTimes; +#endif + +#if ENABLE_DEBUG_MODES + enum ShaderType + { + NVSDK_HBAO_PLUS_PS, + NVSDK_DEBUG_HBAO_PLUS_PS, + }; + static ShaderType s_AOShaderType; +#endif + +private: + Generated::ShaderPermutations::RESOLVE_DEPTH GetResolveDepthPermutation() + { + return (m_InputDepth.Texture.SampleCount == 1) ? Generated::ShaderPermutations::RESOLVE_DEPTH_0 : + Generated::ShaderPermutations::RESOLVE_DEPTH_1; + } + Generated::ShaderPermutations::FETCH_GBUFFER_NORMAL GetFetchNormalPermutation() + { + return (!m_InputNormal.Texture.IsSet()) ? Generated::ShaderPermutations::FETCH_GBUFFER_NORMAL_0 : + (m_InputNormal.Texture.SampleCount == 1) ? Generated::ShaderPermutations::FETCH_GBUFFER_NORMAL_1 : + Generated::ShaderPermutations::FETCH_GBUFFER_NORMAL_2; + } + Generated::ShaderPermutations::ENABLE_FOREGROUND_AO GetEnableForegroundAOPermutation() + { + return (m_Options.EnableForegroundAO) ? Generated::ShaderPermutations::ENABLE_FOREGROUND_AO_1 : + Generated::ShaderPermutations::ENABLE_FOREGROUND_AO_0; + } + Generated::ShaderPermutations::ENABLE_BACKGROUND_AO GetEnableBackgroundAOPermutation() + { + return (m_Options.EnableBackgroundAO) ? Generated::ShaderPermutations::ENABLE_BACKGROUND_AO_1 : + Generated::ShaderPermutations::ENABLE_BACKGROUND_AO_0; + } + Generated::ShaderPermutations::ENABLE_DEPTH_THRESHOLD GetEnableDepthThresholdPermutation() + { + return (m_Options.EnableDepthThreshold) ? Generated::ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1 : + Generated::ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0; + } + Generated::ShaderPermutations::ENABLE_BLUR GetEnableBlurPermutation() + { + return (m_Options.Blur.Enable) ? Generated::ShaderPermutations::ENABLE_BLUR_1 : + Generated::ShaderPermutations::ENABLE_BLUR_0; + } + Generated::ShaderPermutations::KERNEL_RADIUS GetBlurKernelRadiusPermutation() + { + return (m_Options.Blur.Radius == GFSDK_SSAO_BLUR_RADIUS_2) ? Generated::ShaderPermutations::KERNEL_RADIUS_2 : + Generated::ShaderPermutations::KERNEL_RADIUS_4; + } + Generated::ShaderPermutations::ENABLE_SHARPNESS_PROFILE GetEnableSharpnessProfilePermutation() + { + return (m_Options.Blur.SharpnessProfile.Enable) ? Generated::ShaderPermutations::ENABLE_SHARPNESS_PROFILE_1 : + Generated::ShaderPermutations::ENABLE_SHARPNESS_PROFILE_0; + } + + ID3D11SamplerState*& GetAODepthSamplerState() + { + return (m_Options.DepthClampMode == GFSDK_SSAO_CLAMP_TO_EDGE) ? m_States.GetSamplerStatePointClamp() : + m_States.GetSamplerStatePointBorder(); + } + ID3D11ShaderResourceView* GetFullResNormalBufferSRV() + { + return (m_InputNormal.Texture.IsSet()) ? m_InputNormal.Texture.pSRV : m_RTs.GetFullResNormalTexture()->pSRV; + } + + UINT GetOutputMSAASampleMask() + { + return D3D11_DEFAULT_SAMPLE_MASK; + } + BlendPassEnumType GetBlendPassEnum(UINT PassIndex) + { + return (PassIndex == 0) ? BLEND_PASS_0 : BLEND_PASS_1; + } + ID3D11BlendState* GetOutputBlendState(BlendPassEnumType BlendPass = BLEND_PASS_0) + { + return + (m_Output.Blend[BlendPass].Mode == GFSDK_SSAO_OVERWRITE_RGB) ? m_States.GetBlendStateDisabledPreserveAlpha() : + (m_Output.Blend[BlendPass].Mode == GFSDK_SSAO_MULTIPLY_RGB) ? m_States.GetBlendStateMultiplyPreserveAlpha() : + m_Output.Blend[BlendPass].CustomState.pBlendState; + } + const FLOAT* GetOutputBlendFactor(BlendPassEnumType BlendPass = BLEND_PASS_0) + { + return (m_Output.Blend[BlendPass].Mode == GFSDK_SSAO_CUSTOM_BLEND) ? m_Output.Blend[BlendPass].CustomState.pBlendFactor : NULL; + } + + ID3D11DepthStencilView* GetOutputDepthStencilView() + { + return m_Output.DepthStencilBuffer.pDSV; + } + ID3D11DepthStencilState* GetOutputDepthStencilState(BlendPassEnumType BlendPass = BLEND_PASS_0) + { + return (m_Output.DepthStencil[BlendPass].Mode == GFSDK_SSAO_CUSTOM_DEPTH_STENCIL) ? m_Output.DepthStencil[BlendPass].CustomState.pDepthStencilState : m_States.GetDepthStencilStateDisabled(); + } + UINT GetOutputDepthStencilRef(BlendPassEnumType BlendPass = BLEND_PASS_0) + { + return (m_Output.DepthStencil[BlendPass].Mode == GFSDK_SSAO_CUSTOM_DEPTH_STENCIL) ? m_Output.DepthStencil[BlendPass].CustomState.StencilRef : 0; + } + + void CreateResources(ID3D11Device* pD3DDevice); + void ReleaseResources(); + + void SetFullscreenState(ID3D11DeviceContext* pDeviceContext); + void SetAOResolution(UINT Width, UINT Height); + void SetAOResolution(const SSAO::InputViewport &Viewport); + + GFSDK_SSAO_Status SetDataFlow( + const GFSDK_SSAO_InputData_D3D11& InputData, + const GFSDK_SSAO_Parameters& Parameters, + const GFSDK_SSAO_Output_D3D11& Output); + + GFSDK_SSAO_Status SetInputData(const GFSDK_SSAO_InputData_D3D11& InputData); + GFSDK_SSAO_Status SetInputDepths(const GFSDK_SSAO_InputDepthData_D3D11& DepthData); + GFSDK_SSAO_Status SetInputNormals(const GFSDK_SSAO_InputNormalData_D3D11& NormalData); + GFSDK_SSAO_Status SetAOParameters(const GFSDK_SSAO_Parameters& Parameters); + GFSDK_SSAO_Status SetOutput(const GFSDK_SSAO_Output_D3D11& Output); + GFSDK_SSAO_Status ValidateDataFlow(); + + void DrawLinearDepthPS(ID3D11DeviceContext* pDeviceContext); + void DrawDeinterleavedDepthPS(ID3D11DeviceContext* pDeviceContext); + void DrawReconstructedNormalPS(ID3D11DeviceContext* pDeviceContext); + void DrawCoarseAOPS(ID3D11DeviceContext* pDeviceContext); + void DrawReinterleavedAOPS(ID3D11DeviceContext* pDeviceContext); + void DrawReinterleavedAOPS_PreBlur(ID3D11DeviceContext* pDeviceContext); + + void Render(ID3D11DeviceContext* pDeviceContext, GFSDK_SSAO_RenderMask RenderMask); + void RenderHBAOPlus(ID3D11DeviceContext* pDeviceContext, GFSDK_SSAO_RenderMask RenderMask); + + void DrawBlurXPS(ID3D11DeviceContext* pDeviceContext); + void DrawBlurYPS(ID3D11DeviceContext* pDeviceContext); + void DrawDebugNormalsPS(ID3D11DeviceContext* pDeviceContext); + +#if ENABLE_DEBUG_MODES + void DrawFullResAOPS(ID3D11DeviceContext* pDeviceContext); + void RenderDebugAO(ID3D11DeviceContext* pDeviceContext); + GFSDK::SSAO::D3D11::RandomTexture m_RandomTexture; +#endif + + GFSDK::SSAO::D3D11::GlobalConstantBuffer m_GlobalCB; + GFSDK::SSAO::D3D11::PerPassConstantBuffers m_PerPassCBs; + GFSDK::SSAO::D3D11::InputDepthInfo m_InputDepth; + GFSDK::SSAO::D3D11::InputNormalInfo m_InputNormal; + GFSDK::SSAO::D3D11::OutputInfo m_Output; + GFSDK::SSAO::D3D11::RenderTargets m_RTs; + GFSDK::SSAO::D3D11::Shaders m_Shaders; + GFSDK::SSAO::D3D11::States m_States; + GFSDK::SSAO::RenderOptions m_Options; + GFSDK::SSAO::Viewports m_Viewports; + ID3D11ShaderResourceView* m_FullResViewDepthSRV; + GFSDK::SSAO::BuildVersion m_BuildVersion; + GFSDK_SSAO_CustomHeap m_NewDelete; +#if ENABLE_RENDER_TIMES + GFSDK::SSAO::D3D11::TimestampQueries m_TimestampQueries; +#endif +#if ENABLE_DEBUG_MODES + GFSDK::SSAO::D3D11::DebugShaders m_DebugShaders; +#endif +}; + +} // namespace D3D11 + +#endif // SUPPORT_D3D11 + +} // namespace SSAO +} // namespace GFSDK diff --git a/src/Renderer_DX12.cpp b/src/Renderer_DX12.cpp new file mode 100644 index 0000000..3b4cec3 --- /dev/null +++ b/src/Renderer_DX12.cpp @@ -0,0 +1,749 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#if SUPPORT_D3D12 +#include "Renderer_DX12.h" + +//-------------------------------------------------------------------------------- +struct RenderTargetBarrierScope +{ + RenderTargetBarrierScope(ID3D12GraphicsCommandList* pCmdList, ID3D12Resource* pResource) + : m_pCmdList(pCmdList) + , m_pResource(pResource) + { + GFSDK_D3D12_SetResourceBarrier(pCmdList, pResource, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE, D3D12_RESOURCE_STATE_RENDER_TARGET); + } + ~RenderTargetBarrierScope() + { + GFSDK_D3D12_SetResourceBarrier(m_pCmdList, m_pResource, D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE); + } +private: + ID3D12GraphicsCommandList* m_pCmdList; + ID3D12Resource* m_pResource; +}; + +#define RT_BARRIER_SCOPE(pCmdList, pResource) RenderTargetBarrierScope RTScope(pCmdList, pResource) + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::Renderer::CreateResources(GFSDK_D3D12_GraphicsContext* pGraphicsContext) +{ + m_States.Create(pGraphicsContext); + m_Shaders.Create(pGraphicsContext->pDevice); + + m_GlobalCB.Create(pGraphicsContext, eGlobalCB, 0); + m_PerPassCBs.Create(pGraphicsContext, ePerPassCB); + + m_LinearDepthPSO.Create(pGraphicsContext); + m_DebugNormalsPSO.Create(pGraphicsContext, m_States); + m_DeinterleavedDepthPSO.Create(pGraphicsContext, m_States); + m_CoarseAOPSO.Create(pGraphicsContext, m_States); + m_ReinterleavedAOPSO.Create(pGraphicsContext, m_States); + m_ReinterleavedAOBlurPSO.Create(pGraphicsContext, m_States); + m_ReconstructNormalPSO.Create(pGraphicsContext, m_States); + m_BlurXPSO.Create(pGraphicsContext, m_States); + m_BlurYPSO.Create(pGraphicsContext, m_States); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::Renderer::ReleaseResources() +{ + // Test in case Release is called without ever calling RenderAO or PreCreateRTs + if (m_GraphicsContext.pCmdQueue) + { + m_GraphicsContext.WaitGPUIdle(); + + SAFE_RELEASE(m_GraphicsContext.pCmdQueue); + } + + m_GlobalCB.Release(); + m_PerPassCBs.Release(); + + m_LinearDepthPSO.Release(); + m_DebugNormalsPSO.Release(); + m_DeinterleavedDepthPSO.Release(); + m_CoarseAOPSO.Release(); + m_ReinterleavedAOPSO.Release(); + m_ReinterleavedAOBlurPSO.Release(); + m_ReconstructNormalPSO.Release(); + m_BlurXPSO.Release(); + m_BlurYPSO.Release(); + + m_States.Release(); + m_Shaders.Release(); + m_RTs.Release(); +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::D3D12::Renderer::Create( + ID3D12Device* pDevice, + GFSDK_SSAO_UINT NodeMask, + const GFSDK_SSAO_DescriptorHeaps_D3D12& DescriptorHeaps, + GFSDK_SSAO_Version HeaderVersion) +{ + if (!m_BuildVersion.Match(HeaderVersion)) + { + return GFSDK_SSAO_VERSION_MISMATCH; + } + + if (!pDevice) + { + return GFSDK_SSAO_NULL_ARGUMENT; + } + + // Make sure that exactly one bit is set in NodeMask + if (NodeMask == 0 || (NodeMask & (NodeMask - 1)) != 0) + { + return GFSDK_SSAO_D3D12_INVALID_NODE_MASK; + } + + // Make sure that NodeMask points to an existing node + if (NodeMask >= (1u << pDevice->GetNodeCount())) + { + return GFSDK_SSAO_D3D12_INVALID_NODE_MASK; + } + + if (!DescriptorHeaps.CBV_SRV_UAV.pDescHeap || + !DescriptorHeaps.RTV.pDescHeap) + { + return GFSDK_SSAO_NULL_ARGUMENT; + } + + if (DescriptorHeaps.CBV_SRV_UAV.pDescHeap->GetDesc().Type != D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV || + DescriptorHeaps.RTV.pDescHeap->GetDesc().Type != D3D12_DESCRIPTOR_HEAP_TYPE_RTV) + { + return GFSDK_SSAO_D3D12_INVALID_HEAP_TYPE; + } + + if (DescriptorHeaps.CBV_SRV_UAV.NumDescriptors < GFSDK_SSAO_NUM_DESCRIPTORS_CBV_SRV_UAV_HEAP_D3D12 || + DescriptorHeaps.RTV.NumDescriptors < GFSDK_SSAO_NUM_DESCRIPTORS_RTV_HEAP_D3D12) + { + return GFSDK_SSAO_D3D12_INSUFFICIENT_DESCRIPTORS; + } + + m_GraphicsContext.Init(pDevice, DescriptorHeaps, NodeMask); + + D3D12_FEATURE_DATA_FEATURE_LEVELS FeatureLevelsInfo = {}; + D3D_FEATURE_LEVEL Level = D3D_FEATURE_LEVEL_11_0; + FeatureLevelsInfo.NumFeatureLevels = 1; + FeatureLevelsInfo.pFeatureLevelsRequested = &Level; + + HRESULT Hr = pDevice->CheckFeatureSupport(D3D12_FEATURE_FEATURE_LEVELS, &FeatureLevelsInfo, sizeof(FeatureLevelsInfo)); + if ((Hr != S_OK) || (FeatureLevelsInfo.MaxSupportedFeatureLevel < D3D_FEATURE_LEVEL_11_0)) + { + return GFSDK_SSAO_D3D_FEATURE_LEVEL_NOT_SUPPORTED; + } + +#if ENABLE_EXCEPTIONS + try + { + CreateResources(&m_GraphicsContext); + } + catch (...) + { + ReleaseResources(); + + return GFSDK_SSAO_D3D_RESOURCE_CREATION_FAILED; + } +#else + CreateResources(pContext); +#endif + + m_RTs.SetGraphicsContext(&m_GraphicsContext); + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::Renderer::Release() +{ + ReleaseResources(); + m_GraphicsContext.Release(); + m_NewDelete.delete_(this); +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::D3D12::Renderer::RenderAO( + ID3D12CommandQueue* pCmdQueue, + ID3D12GraphicsCommandList* pCmdList, + const GFSDK_SSAO_InputData_D3D12& InputData, + const GFSDK_SSAO_Parameters& Parameters, + const GFSDK_SSAO_Output_D3D12& Output, + GFSDK_SSAO_RenderMask RenderMask) +{ + GFSDK_SSAO_Status Status; + + if (!pCmdList || !pCmdQueue) + { + return GFSDK_SSAO_NULL_ARGUMENT; + } + + if (pCmdQueue->GetDesc().NodeMask != m_GraphicsContext.NodeMask) + { + return GFSDK_SSAO_D3D12_INVALID_NODE_MASK; + } + + SAFE_RELEASE(m_GraphicsContext.pCmdQueue); + + m_GraphicsContext.pCmdList = pCmdList; + m_GraphicsContext.pCmdQueue = pCmdQueue; + m_GraphicsContext.pCmdQueue->AddRef(); + + Status = SetDataFlow(InputData, Parameters, Output); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + Status = m_RTs.PreCreate(m_Options); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + +#if ENABLE_EXCEPTIONS + try + { + Render(&m_GraphicsContext, RenderMask); + } + catch (...) + { + ReleaseResources(); + + return GFSDK_SSAO_D3D_RESOURCE_CREATION_FAILED; + } +#else + Render(&m_GraphicsContext, RenderMask); +#endif + + m_GraphicsContext.IncrFenceValue(); + + // Make sure that pCmdList is not used outside of RenderAO + m_GraphicsContext.pCmdList = NULL; + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::D3D12::Renderer::PreCreateRTs(ID3D12CommandQueue* pCmdQueue, + const GFSDK_SSAO_Parameters& Parameters, + UINT ViewportWidth, + UINT ViewportHeight) +{ + if (!pCmdQueue) + { + return GFSDK_SSAO_NULL_ARGUMENT; + } + + if (pCmdQueue->GetDesc().NodeMask != m_GraphicsContext.NodeMask) + { + return GFSDK_SSAO_D3D12_INVALID_NODE_MASK; + } + + SAFE_RELEASE(m_GraphicsContext.pCmdQueue); + + m_GraphicsContext.pCmdQueue = pCmdQueue; + m_GraphicsContext.pCmdQueue->AddRef(); + + SetAOResolution(ViewportWidth, ViewportHeight); + + m_Options.SetRenderOptions(Parameters); + + return m_RTs.PreCreate(m_Options); +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::D3D12::Renderer::GetProjectionMatrixDepthRange( + const GFSDK_SSAO_InputData_D3D12& InputData, + GFSDK_SSAO_ProjectionMatrixDepthRange& OutputDepthRange) +{ + GFSDK_SSAO_Status Status; + + SSAO::ProjectionMatrixInfo ProjectionMatrixInfo; + Status = ProjectionMatrixInfo.Init(InputData.DepthData.ProjectionMatrix, API_D3D11); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + ProjectionMatrixInfo.GetDepthRange(&OutputDepthRange); + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::Renderer::DrawLinearDepthPS(GFSDK_D3D12_GraphicsContext* pGraphicsContext) +{ +#if ENABLE_PERF_MARKERS + PERF_MARKER_SCOPE(L"DrawLinearDepthPS"); +#endif + + if (m_InputDepth.DepthTextureType == GFSDK_SSAO_VIEW_DEPTHS && + m_InputDepth.Texture.SampleCount == 1 && + m_InputDepth.Viewport.RectCoversFullInputTexture) + { + m_FullResViewDepthSRV = m_InputDepth.Texture.SRV; + return; + } + + ID3D12GraphicsCommandList* pCmdList = pGraphicsContext->pCmdList; + + RT_BARRIER_SCOPE(pCmdList, m_RTs.GetFullResViewDepthTexture()->RTV.pResource); + + pCmdList->OMSetRenderTargets(1, &m_RTs.GetFullResViewDepthTexture()->RTV.CpuHandle, false, nullptr); + pCmdList->RSSetViewports(1, &m_Viewports.FullRes); + + pCmdList->SetGraphicsRootSignature(m_LinearDepthPSO.GetRS()); + pCmdList->SetGraphicsRootDescriptorTable(LinearDepthPSO::RootParameters::Buffer0, m_GraphicsContext.DescHeaps.GetGpuHandle(eGlobalCB, 0)); + pCmdList->SetGraphicsRootDescriptorTable(LinearDepthPSO::RootParameters::Texture0, m_InputDepth.Texture.SRV.GpuHandle); + + pCmdList->SetPipelineState(m_LinearDepthPSO.GetPSO(pGraphicsContext, m_Shaders, GetResolveDepthPermutation(), m_InputDepth.DepthTextureType)); + + pCmdList->DrawInstanced(3, 1, 0, 0); + + m_FullResViewDepthSRV = m_RTs.GetFullResViewDepthTexture()->SRV; +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::Renderer::DrawDeinterleavedDepthPS(GFSDK_D3D12_GraphicsContext* pGraphicsContext) +{ +#if ENABLE_PERF_MARKERS + PERF_MARKER_SCOPE(L"DrawDeinterleavedDepthPS"); +#endif + + ID3D12GraphicsCommandList* pCmdList = pGraphicsContext->pCmdList; + + pCmdList->RSSetViewports(1, &m_Viewports.QuarterRes); + + pCmdList->SetGraphicsRootSignature(m_DeinterleavedDepthPSO.GetRS()); + pCmdList->SetGraphicsRootDescriptorTable(DeinterleavedDepthPSO::RootParameters::Buffer0, m_GraphicsContext.DescHeaps.GetGpuHandle(eGlobalCB, 0)); + pCmdList->SetGraphicsRootDescriptorTable(DeinterleavedDepthPSO::RootParameters::Texture0, m_GraphicsContext.DescHeaps.GetGpuHandle(eFullResViewDepthTexture, 0)); + + pCmdList->SetPipelineState(m_DeinterleavedDepthPSO.GetPSO(pGraphicsContext, m_Shaders, m_States, m_RTs, m_Options.DepthStorage)); + + RT_BARRIER_SCOPE(pCmdList, m_RTs.GetQuarterResViewDepthTextureArray(m_Options)->pResource); + + for (UINT SliceIndex = 0; SliceIndex < 16; SliceIndex += DeinterleavedDepthPSO::MRT_COUNT) + { + pCmdList->SetGraphicsRootDescriptorTable(DeinterleavedDepthPSO::RootParameters::Buffer1, m_GraphicsContext.DescHeaps.GetGpuHandle(ePerPassCB, SliceIndex)); + + D3D12_CPU_DESCRIPTOR_HANDLE RTVHandle = m_RTs.GetQuarterResViewDepthTextureArray(m_Options)->RTVs[SliceIndex].CpuHandle; + BOOL RTsSingleHandleToDescriptorRange = true; + + pCmdList->OMSetRenderTargets(DeinterleavedDepthPSO::MRT_COUNT, &RTVHandle, RTsSingleHandleToDescriptorRange, nullptr); + + pCmdList->DrawInstanced(3, 1, 0, 0); + } +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::Renderer::DrawReconstructedNormalPS(GFSDK_D3D12_GraphicsContext* pGraphicsContext) +{ +#if ENABLE_PERF_MARKERS + PERF_MARKER_SCOPE(L"DrawReconstructedNormalPS"); +#endif + + ID3D12GraphicsCommandList* pCmdList = pGraphicsContext->pCmdList; + + RT_BARRIER_SCOPE(pCmdList, m_RTs.GetFullResNormalTexture()->RTV.pResource); + + pCmdList->OMSetRenderTargets(1, &m_RTs.GetFullResNormalTexture()->RTV.CpuHandle, false, nullptr); + pCmdList->RSSetViewports(1, &m_Viewports.FullRes); + + pCmdList->SetGraphicsRootSignature(m_ReconstructNormalPSO.GetRS()); + pCmdList->SetGraphicsRootDescriptorTable(ReconstructNormalPSO::RootParameters::Buffer0, m_GraphicsContext.DescHeaps.GetGpuHandle(eGlobalCB, 0)); + pCmdList->SetGraphicsRootDescriptorTable(ReconstructNormalPSO::RootParameters::Texture0, m_RTs.GetFullResViewDepthTexture()->SRV.GpuHandle); + + pCmdList->SetPipelineState(m_ReconstructNormalPSO.GetPSO(pGraphicsContext, m_Shaders)); + + pCmdList->DrawInstanced(3, 1, 0, 0); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::Renderer::DrawDebugNormalsPS(GFSDK_D3D12_GraphicsContext* pGraphicsContext) +{ +#if ENABLE_PERF_MARKERS + PERF_MARKER_SCOPE(L"DrawDebugNormalsPS"); +#endif + + ID3D12GraphicsCommandList* pCmdList = pGraphicsContext->pCmdList; + + pCmdList->OMSetRenderTargets(1, &m_Output.RenderTarget.RTV.CpuHandle, false, nullptr); + pCmdList->RSSetViewports(1, &m_InputDepth.Viewport); + + pCmdList->SetGraphicsRootSignature(m_DebugNormalsPSO.GetRS()); + pCmdList->SetGraphicsRootDescriptorTable(DebugNormalsPSO::RootParameters::Buffer0, m_GraphicsContext.DescHeaps.GetGpuHandle(eGlobalCB, 0)); + pCmdList->SetGraphicsRootDescriptorTable(DebugNormalsPSO::RootParameters::Texture0, m_RTs.GetFullResViewDepthTexture()->SRV.GpuHandle); + + if (m_InputNormal.Texture.IsSet()) + { + pCmdList->SetGraphicsRootDescriptorTable(DebugNormalsPSO::RootParameters::Texture1, m_InputNormal.Texture.SRV.GpuHandle); + } + + pCmdList->SetPipelineState(m_DebugNormalsPSO.GetPSO(pGraphicsContext, m_Shaders, m_States, m_Output, GetFetchNormalPermutation())); + + pCmdList->DrawInstanced(3, 1, 0, 0); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::Renderer::DrawCoarseAOPS(GFSDK_D3D12_GraphicsContext* pGraphicsContext) +{ +#if ENABLE_PERF_MARKERS + PERF_MARKER_SCOPE(L"DrawCoarseAOPS"); +#endif + + ID3D12GraphicsCommandList* pCmdList = pGraphicsContext->pCmdList; + + pCmdList->SetPipelineState(m_CoarseAOPSO.GetPSO(pGraphicsContext, m_Shaders, GetEnableForegroundAOPermutation(), GetEnableBackgroundAOPermutation(), GetEnableDepthThresholdPermutation(), GetFetchNormalPermutation())); + + RT_BARRIER_SCOPE(pCmdList, m_RTs.GetQuarterResAOTextureArray()->pResource); + + pCmdList->OMSetRenderTargets(1, &m_RTs.GetQuarterResAOTextureArray()->RTV.CpuHandle, false, nullptr); + pCmdList->RSSetViewports(1, &m_Viewports.QuarterRes); + + pCmdList->SetGraphicsRootSignature(m_CoarseAOPSO.GetRS()); + pCmdList->SetGraphicsRootDescriptorTable(CoarseAOPSO::RootParameters::Buffer0, m_GraphicsContext.DescHeaps.GetGpuHandle(eGlobalCB, 0)); + pCmdList->SetGraphicsRootDescriptorTable(CoarseAOPSO::RootParameters::Texture1, GetFullResNormalBufferSRV()->GpuHandle); + + for (UINT SliceIndex = 0; SliceIndex < 16; ++SliceIndex) + { + pCmdList->SetGraphicsRootDescriptorTable(CoarseAOPSO::RootParameters::Buffer1, m_GraphicsContext.DescHeaps.GetGpuHandle(ePerPassCB, SliceIndex)); + pCmdList->SetGraphicsRootDescriptorTable(CoarseAOPSO::RootParameters::Texture0, m_RTs.GetQuarterResViewDepthTextureArray(m_Options)->SRVs[SliceIndex].GpuHandle); + + pCmdList->DrawInstanced(3, 1, 0, 0); + } +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::Renderer::DrawReinterleavedAOPS_PreBlur(GFSDK_D3D12_GraphicsContext* pGraphicsContext) +{ +#if ENABLE_PERF_MARKERS + PERF_MARKER_SCOPE(L"DrawReinterleavedAOPS"); +#endif + + ID3D12GraphicsCommandList* pCmdList = pGraphicsContext->pCmdList; + + RT_BARRIER_SCOPE(pCmdList, m_RTs.GetFullResAOZTexture2()->RTV.pResource); + + pCmdList->OMSetRenderTargets(1, &m_RTs.GetFullResAOZTexture2()->RTV.CpuHandle, false, nullptr); + pCmdList->RSSetViewports(1, &m_Viewports.FullRes); + + pCmdList->SetPipelineState(m_ReinterleavedAOBlurPSO.GetPSO(pGraphicsContext, m_Shaders)); + + pCmdList->SetGraphicsRootSignature(m_ReinterleavedAOBlurPSO.GetRS()); + pCmdList->SetGraphicsRootDescriptorTable(ReinterleavedAOBlurPSO::RootParameters::Buffer0, m_GraphicsContext.DescHeaps.GetGpuHandle(eGlobalCB, 0)); + pCmdList->SetGraphicsRootDescriptorTable(ReinterleavedAOBlurPSO::RootParameters::Texture0, m_RTs.GetQuarterResAOTextureArray()->SRV.GpuHandle); + pCmdList->SetGraphicsRootDescriptorTable(ReinterleavedAOBlurPSO::RootParameters::Texture1, m_FullResViewDepthSRV.GpuHandle); + + pCmdList->DrawInstanced(3, 1, 0, 0); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::Renderer::DrawReinterleavedAOPS(GFSDK_D3D12_GraphicsContext* pGraphicsContext) +{ +#if ENABLE_PERF_MARKERS + PERF_MARKER_SCOPE(L"DrawReinterleavedAOPS"); +#endif + + ID3D12GraphicsCommandList* pCmdList = pGraphicsContext->pCmdList; + + pCmdList->OMSetRenderTargets(1, &m_Output.RenderTarget.RTV.CpuHandle, false, nullptr); + pCmdList->RSSetViewports(1, &m_InputDepth.Viewport); + + if (GetOutputBlendFactor()) + { + pCmdList->OMSetBlendFactor(GetOutputBlendFactor()); + } + + pCmdList->SetPipelineState(m_ReinterleavedAOPSO.GetPSO(pGraphicsContext, m_Shaders, m_States, m_Output)); + + pCmdList->SetGraphicsRootSignature(m_ReinterleavedAOPSO.GetRS()); + pCmdList->SetGraphicsRootDescriptorTable(ReinterleavedAOPSO::RootParameters::Buffer0, m_GraphicsContext.DescHeaps.GetGpuHandle(eGlobalCB, 0)); + pCmdList->SetGraphicsRootDescriptorTable(ReinterleavedAOPSO::RootParameters::Texture0, m_RTs.GetQuarterResAOTextureArray()->SRV.GpuHandle); + + pCmdList->DrawInstanced(3, 1, 0, 0); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::Renderer::DrawBlurXPS(GFSDK_D3D12_GraphicsContext* pGraphicsContext) +{ +#if ENABLE_PERF_MARKERS + PERF_MARKER_SCOPE(L"DrawBlurXPS"); +#endif + + ID3D12GraphicsCommandList* pCmdList = pGraphicsContext->pCmdList; + + RT_BARRIER_SCOPE(pCmdList, m_RTs.GetFullResAOZTexture()->RTV.pResource); + + pCmdList->OMSetRenderTargets(1, &m_RTs.GetFullResAOZTexture()->RTV.CpuHandle, false, nullptr); + pCmdList->RSSetViewports(1, &m_Viewports.FullRes); + + pCmdList->SetPipelineState(m_BlurXPSO.GetPSO(pGraphicsContext, m_Shaders, GetEnableSharpnessProfilePermutation(), GetBlurKernelRadiusPermutation())); + + pCmdList->SetGraphicsRootSignature(m_BlurXPSO.GetRS()); + pCmdList->SetGraphicsRootDescriptorTable(BlurXPSO::RootParameters::Buffer0, m_GraphicsContext.DescHeaps.GetGpuHandle(eGlobalCB, 0)); + pCmdList->SetGraphicsRootDescriptorTable(BlurXPSO::RootParameters::Texture0, m_RTs.GetFullResAOZTexture2()->SRV.GpuHandle); + + pCmdList->DrawInstanced(3, 1, 0, 0); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::Renderer::DrawBlurYPS(GFSDK_D3D12_GraphicsContext* pGraphicsContext) +{ +#if ENABLE_PERF_MARKERS + PERF_MARKER_SCOPE(L"DrawBlurYPS"); +#endif + + ID3D12GraphicsCommandList* pCmdList = pGraphicsContext->pCmdList; + + pCmdList->RSSetViewports(1, &m_InputDepth.Viewport); + + pCmdList->OMSetRenderTargets(1, &m_Output.RenderTarget.RTV.CpuHandle, false, nullptr); + + if (GetOutputBlendFactor()) + { + pCmdList->OMSetBlendFactor(GetOutputBlendFactor()); + } + + pCmdList->SetPipelineState(m_BlurYPSO.GetPSO(pGraphicsContext, m_Shaders, m_States, m_Output, GetEnableSharpnessProfilePermutation(), GetBlurKernelRadiusPermutation())); + + pCmdList->SetGraphicsRootSignature(m_BlurYPSO.GetRS()); + pCmdList->SetGraphicsRootDescriptorTable(BlurYPSO::RootParameters::Buffer0, m_GraphicsContext.DescHeaps.GetGpuHandle(eGlobalCB, 0)); + pCmdList->SetGraphicsRootDescriptorTable(BlurYPSO::RootParameters::Texture0, m_RTs.GetFullResAOZTexture()->SRV.GpuHandle); + + pCmdList->DrawInstanced(3, 1, 0, 0); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::Renderer::RenderHBAOPlus(GFSDK_D3D12_GraphicsContext* pGraphicsContext, GFSDK_SSAO_RenderMask RenderMask) +{ + if (RenderMask & GFSDK_SSAO_DRAW_Z) + { + DrawLinearDepthPS(pGraphicsContext); + } + + if (RenderMask & GFSDK_SSAO_DRAW_DEBUG_N) + { + DrawDebugNormalsPS(pGraphicsContext); + } + + if (RenderMask & GFSDK_SSAO_DRAW_AO) + { + DrawDeinterleavedDepthPS(pGraphicsContext); + + if (!m_InputNormal.Texture.IsSet()) + { + DrawReconstructedNormalPS(pGraphicsContext); + } + + DrawCoarseAOPS(pGraphicsContext); + + if (m_Options.Blur.Enable) + { + DrawReinterleavedAOPS_PreBlur(pGraphicsContext); + DrawBlurXPS(pGraphicsContext); + DrawBlurYPS(pGraphicsContext); + } + else + { + DrawReinterleavedAOPS(pGraphicsContext); + } + } +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::Renderer::Render(GFSDK_D3D12_GraphicsContext* pGraphicsContext, GFSDK_SSAO_RenderMask RenderMask) +{ +#if ENABLE_PERF_MARKERS + PERF_MARKER_SCOPE(L"HBAO+"); +#endif + + m_GraphicsContext.pCmdList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); + + m_GlobalCB.UpdateBuffer(pGraphicsContext, RenderMask); + + RenderHBAOPlus(pGraphicsContext, RenderMask); +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::D3D12::Renderer::SetInputData(const GFSDK_SSAO_InputData_D3D12& InputData) +{ + GFSDK_SSAO_Status Status; + + Status = SetInputDepths(InputData.DepthData); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + Status = SetInputNormals(InputData.NormalData); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::D3D12::Renderer::SetInputDepths(const GFSDK_SSAO_InputDepthData_D3D12& DepthData) +{ + m_InputDepth = GFSDK::SSAO::D3D12::InputDepthInfo(); + + GFSDK_SSAO_Status Status = m_InputDepth.SetData(DepthData); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + m_GlobalCB.SetDepthData(m_InputDepth); + + SetAOResolution(m_InputDepth.Viewport); + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::D3D12::Renderer::SetInputNormals(const GFSDK_SSAO_InputNormalData_D3D12& NormalData) +{ + m_InputNormal = GFSDK::SSAO::D3D12::InputNormalInfo(); + + if (!NormalData.Enable) + { + // Input normals disabled. In this case, the lib reconstructs normals from depths. + return GFSDK_SSAO_OK; + } + + GFSDK_SSAO_Status Status = m_InputNormal.SetData(NormalData); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + m_GlobalCB.SetNormalData(NormalData); + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::D3D12::Renderer::SetOutput(const GFSDK_SSAO_Output_D3D12& Output) +{ + m_Output = GFSDK::SSAO::D3D12::OutputInfo(); + + GFSDK_SSAO_Status Status = m_Output.Init(Output); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::D3D12::Renderer::ValidateDataFlow() +{ + if (m_InputNormal.Texture.IsSet()) + { + if (m_InputNormal.Texture.Width != m_InputDepth.Texture.Width || + m_InputNormal.Texture.Height != m_InputDepth.Texture.Height) + { + return GFSDK_SSAO_INVALID_NORMAL_TEXTURE_RESOLUTION; + } + if (m_InputNormal.Texture.SampleCount != m_InputDepth.Texture.SampleCount) + { + return GFSDK_SSAO_INVALID_NORMAL_TEXTURE_SAMPLE_COUNT; + } + } + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::D3D12::Renderer::SetAOParameters(const GFSDK_SSAO_Parameters& Params) +{ + if (Params.DepthClampMode == GFSDK_SSAO_CLAMP_TO_BORDER) + { + return GFSDK_SSAO_D3D12_UNSUPPORTED_DEPTH_CLAMP_MODE; + } + + if (Params.Blur.Enable != m_Options.Blur.Enable || + Params.DepthStorage != m_Options.DepthStorage) + { + m_GraphicsContext.WaitGPUIdle(); + m_RTs.ReleaseResources(); + } + + m_GlobalCB.SetAOParameters(Params, m_InputDepth); + m_Options.SetRenderOptions(Params); + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::D3D12::Renderer::SetDataFlow( + const GFSDK_SSAO_InputData_D3D12& InputData, + const GFSDK_SSAO_Parameters& Parameters, + const GFSDK_SSAO_Output_D3D12& Output) +{ + GFSDK_SSAO_Status Status; + + Status = SetInputData(InputData); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + Status = SetAOParameters(Parameters); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + Status = SetOutput(Output); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + Status = ValidateDataFlow(); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::Renderer::SetAOResolution(UINT Width, UINT Height) +{ + if (Width != m_RTs.GetFullWidth() || + Height != m_RTs.GetFullHeight()) + { + m_GraphicsContext.WaitGPUIdle(); + m_RTs.ReleaseResources(); + m_RTs.SetFullResolution(Width, Height); + m_Viewports.SetFullResolution(Width, Height); + m_GlobalCB.SetResolutionConstants(m_Viewports); + } +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::Renderer::SetAOResolution(const SSAO::InputViewport &Viewport) +{ + SetAOResolution(UINT(Viewport.Width), UINT(Viewport.Height)); +} + +//-------------------------------------------------------------------------------- +UINT GFSDK::SSAO::D3D12::Renderer::GetAllocatedVideoMemoryBytes() +{ + return m_RTs.GetCurrentAllocatedVideoMemoryBytes(); +} + +#endif // SUPPORT_D3D12 diff --git a/src/Renderer_DX12.h b/src/Renderer_DX12.h new file mode 100644 index 0000000..c13c52b --- /dev/null +++ b/src/Renderer_DX12.h @@ -0,0 +1,200 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#pragma once +#include "Common.h" +#include "ConstantBuffers.h" +#include "InputDepthInfo.h" +#include "InputNormalInfo.h" +#include "OutputInfo.h" +#include "ProjectionMatrixInfo.h" +#include "RandomTexture.h" +#include "RenderOptions.h" +#include "RenderTargets_DX12.h" +#include "Shaders_DX12.h" +#include "PipelineStateObjects_DX12.h" +#include "States_DX12.h" +#include "TimestampQueries.h" +#include "BuildVersion.h" +#include "PerfMarkers.h" + +namespace GFSDK +{ +namespace SSAO +{ + +//-------------------------------------------------------------------------------- +#if SUPPORT_D3D12 +namespace D3D12 +{ + +//-------------------------------------------------------------------------------- +class Renderer : public GFSDK_SSAO_Context_D3D12 +{ +public: + Renderer(GFSDK_SSAO_CustomHeap NewDelete) + : m_NewDelete(NewDelete) + { + } + + // + // API + // + + GFSDK_SSAO_Status Create( + ID3D12Device* pDevice, + GFSDK_SSAO_UINT NodeMask, + const GFSDK_SSAO_DescriptorHeaps_D3D12& DescriptorHeaps, + GFSDK_SSAO_Version HeaderVersion); + + void Release(); + + GFSDK_SSAO_Status PreCreateRTs( + ID3D12CommandQueue* pCmdQueue, + const GFSDK_SSAO_Parameters& Parameters, + UINT ViewportWidth, + UINT ViewportHeight); + + GFSDK_SSAO_Status GetProjectionMatrixDepthRange( + const GFSDK_SSAO_InputData_D3D12& InputData, + GFSDK_SSAO_ProjectionMatrixDepthRange& OutputDepthRange); + + GFSDK_SSAO_Status RenderAO( + ID3D12CommandQueue* pCmdQueue, + ID3D12GraphicsCommandList* pCmdList, + const GFSDK_SSAO_InputData_D3D12& InputData, + const GFSDK_SSAO_Parameters& Parameters, + const GFSDK_SSAO_Output_D3D12& Output, + GFSDK_SSAO_RenderMask RenderMask = GFSDK_SSAO_RENDER_AO); + + UINT GetAllocatedVideoMemoryBytes(); + + // + // Internals + // + +private: + Generated::ShaderPermutations::RESOLVE_DEPTH GetResolveDepthPermutation() + { + return (m_InputDepth.Texture.SampleCount == 1) ? Generated::ShaderPermutations::RESOLVE_DEPTH_0 : + Generated::ShaderPermutations::RESOLVE_DEPTH_1; + } + Generated::ShaderPermutations::FETCH_GBUFFER_NORMAL GetFetchNormalPermutation() + { + return (!m_InputNormal.Texture.IsSet()) ? Generated::ShaderPermutations::FETCH_GBUFFER_NORMAL_0 : + (m_InputNormal.Texture.SampleCount == 1) ? Generated::ShaderPermutations::FETCH_GBUFFER_NORMAL_1 : + Generated::ShaderPermutations::FETCH_GBUFFER_NORMAL_2; + } + Generated::ShaderPermutations::ENABLE_FOREGROUND_AO GetEnableForegroundAOPermutation() + { + return (m_Options.EnableForegroundAO) ? Generated::ShaderPermutations::ENABLE_FOREGROUND_AO_1 : + Generated::ShaderPermutations::ENABLE_FOREGROUND_AO_0; + } + Generated::ShaderPermutations::ENABLE_BACKGROUND_AO GetEnableBackgroundAOPermutation() + { + return (m_Options.EnableBackgroundAO) ? Generated::ShaderPermutations::ENABLE_BACKGROUND_AO_1 : + Generated::ShaderPermutations::ENABLE_BACKGROUND_AO_0; + } + Generated::ShaderPermutations::ENABLE_DEPTH_THRESHOLD GetEnableDepthThresholdPermutation() + { + return (m_Options.EnableDepthThreshold) ? Generated::ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1 : + Generated::ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0; + } + Generated::ShaderPermutations::ENABLE_BLUR GetEnableBlurPermutation() + { + return (m_Options.Blur.Enable) ? Generated::ShaderPermutations::ENABLE_BLUR_1 : + Generated::ShaderPermutations::ENABLE_BLUR_0; + } + Generated::ShaderPermutations::KERNEL_RADIUS GetBlurKernelRadiusPermutation() + { + return (m_Options.Blur.Radius == GFSDK_SSAO_BLUR_RADIUS_2) ? Generated::ShaderPermutations::KERNEL_RADIUS_2 : + Generated::ShaderPermutations::KERNEL_RADIUS_4; + } + Generated::ShaderPermutations::ENABLE_SHARPNESS_PROFILE GetEnableSharpnessProfilePermutation() + { + return (m_Options.Blur.SharpnessProfile.Enable) ? Generated::ShaderPermutations::ENABLE_SHARPNESS_PROFILE_1 : + Generated::ShaderPermutations::ENABLE_SHARPNESS_PROFILE_0; + } + + const ShaderResourceView* GetFullResNormalBufferSRV() + { + return m_InputNormal.Texture.IsSet() ? &m_InputNormal.Texture.SRV : &m_RTs.GetFullResNormalTexture()->SRV; + } + + const FLOAT* GetOutputBlendFactor() + { + return (m_Output.Blend.Mode == GFSDK_SSAO_CUSTOM_BLEND) ? m_Output.Blend.CustomState.pBlendFactor : NULL; + } + + void CreateResources(GFSDK_D3D12_GraphicsContext* pD3DDevice); + void ReleaseResources(); + + void SetAOResolution(UINT Width, UINT Height); + void SetAOResolution(const SSAO::InputViewport &Viewport); + + GFSDK_SSAO_Status SetDataFlow( + const GFSDK_SSAO_InputData_D3D12& InputData, + const GFSDK_SSAO_Parameters& Parameters, + const GFSDK_SSAO_Output_D3D12& Output); + + GFSDK_SSAO_Status SetInputData(const GFSDK_SSAO_InputData_D3D12& InputData); + GFSDK_SSAO_Status SetInputDepths(const GFSDK_SSAO_InputDepthData_D3D12& DepthData); + GFSDK_SSAO_Status SetInputNormals(const GFSDK_SSAO_InputNormalData_D3D12& NormalData); + GFSDK_SSAO_Status SetAOParameters(const GFSDK_SSAO_Parameters& Parameters); + GFSDK_SSAO_Status SetOutput(const GFSDK_SSAO_Output_D3D12& Output); + GFSDK_SSAO_Status ValidateDataFlow(); + + void DrawLinearDepthPS(GFSDK_D3D12_GraphicsContext* pGraphicsContext); + void DrawDeinterleavedDepthPS(GFSDK_D3D12_GraphicsContext* pGraphicsContext); + void DrawReconstructedNormalPS(GFSDK_D3D12_GraphicsContext* pGraphicsContext); + void DrawCoarseAOPS(GFSDK_D3D12_GraphicsContext* pGraphicsContext); + void DrawReinterleavedAOPS(GFSDK_D3D12_GraphicsContext* pGraphicsContext); + void DrawReinterleavedAOPS_PreBlur(GFSDK_D3D12_GraphicsContext* pGraphicsContext); + + void Render(GFSDK_D3D12_GraphicsContext* pGraphicsContext, GFSDK_SSAO_RenderMask RenderMask); + void RenderHBAOPlus(GFSDK_D3D12_GraphicsContext* pGraphicsContext, GFSDK_SSAO_RenderMask RenderMask); + + void DrawBlurXPS(GFSDK_D3D12_GraphicsContext* pGraphicsContext); + void DrawBlurYPS(GFSDK_D3D12_GraphicsContext* pGraphicsContext); + void DrawDebugNormalsPS(GFSDK_D3D12_GraphicsContext* pGraphicsContext); + + GFSDK::SSAO::D3D12::GlobalConstantBuffer m_GlobalCB; + GFSDK::SSAO::D3D12::PerPassConstantBuffers m_PerPassCBs; + GFSDK::SSAO::D3D12::InputDepthInfo m_InputDepth; + GFSDK::SSAO::D3D12::InputNormalInfo m_InputNormal; + GFSDK::SSAO::D3D12::OutputInfo m_Output; + GFSDK::SSAO::D3D12::RenderTargets m_RTs; + GFSDK::SSAO::D3D12::Shaders m_Shaders; + GFSDK::SSAO::D3D12::States m_States; + GFSDK::SSAO::D3D12::RandomTexture m_RandomTexture; + GFSDK::SSAO::RenderOptions m_Options; + GFSDK::SSAO::Viewports m_Viewports; + ShaderResourceView m_FullResViewDepthSRV; + GFSDK::SSAO::BuildVersion m_BuildVersion; + GFSDK_SSAO_CustomHeap m_NewDelete; + + LinearDepthPSO m_LinearDepthPSO; + DebugNormalsPSO m_DebugNormalsPSO; + DeinterleavedDepthPSO m_DeinterleavedDepthPSO; + ReconstructNormalPSO m_ReconstructNormalPSO; + CoarseAOPSO m_CoarseAOPSO; + ReinterleavedAOBlurPSO m_ReinterleavedAOBlurPSO; + ReinterleavedAOPSO m_ReinterleavedAOPSO; + BlurXPSO m_BlurXPSO; + BlurYPSO m_BlurYPSO; + + GFSDK_D3D12_GraphicsContext m_GraphicsContext; +}; + +} // namespace D3D12 +#endif // SUPPORT_D3D12 + +} // namespace SSAO +} // namespace GFSDK diff --git a/src/Renderer_GL.cpp b/src/Renderer_GL.cpp new file mode 100644 index 0000000..3594772 --- /dev/null +++ b/src/Renderer_GL.cpp @@ -0,0 +1,556 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "Renderer_GL.h" + +#if SUPPORT_GL + +#if ENABLE_RENDER_TIMES +GFSDK::SSAO::RenderTimes GFSDK::SSAO::GL::Renderer::s_RenderTimes; +#endif + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::GL::Renderer::Create(GFSDK_SSAO_Version HeaderVersion) +{ + if (!m_BuildVersion.Match(HeaderVersion)) + { + return GFSDK_SSAO_VERSION_MISMATCH; + } + +#if ENABLE_EXCEPTIONS + try + { + CreateResources(); + } + catch(...) + { + ReleaseResources(); + + return GFSDK_SSAO_GL_RESOURCE_CREATION_FAILED; + } +#else + CreateResources(); +#endif + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GL::Renderer::Release() +{ + ReleaseResources(); + + m_NewDelete.delete_(this); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GL::Renderer::CreateResources() +{ + m_GlobalCB.Create(m_GL); + m_PerPassCBs.Create(m_GL); + m_Shaders.Create(m_GL); + m_VAO.Create(m_GL); +#if ENABLE_RENDER_TIMES + m_TimestampQueries.Create(); +#endif +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GL::Renderer::ReleaseResources() +{ + m_GlobalCB.Release(m_GL); + m_PerPassCBs.Release(m_GL); + m_Shaders.Release(m_GL); + m_VAO.Release(m_GL); + m_RTs.Release(m_GL); +#if ENABLE_RENDER_TIMES + m_TimestampQueries.Release(); +#endif +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::GL::Renderer::PreCreateFBOs( + const GFSDK_SSAO_Parameters& Parameters, + UINT ViewportWidth, + UINT ViewportHeight) +{ + SetAOResolution(ViewportWidth, ViewportHeight); + + m_Options.SetRenderOptions(Parameters); + + return m_RTs.PreCreate(m_GL, m_Options); +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::GL::Renderer::GetProjectionMatrixDepthRange( + const GFSDK_SSAO_InputData_GL& InputData, + GFSDK_SSAO_ProjectionMatrixDepthRange& OutputDepthRange) +{ + GFSDK_SSAO_Status Status; + + SSAO::ProjectionMatrixInfo ProjectionMatrixInfo; + Status = ProjectionMatrixInfo.Init(InputData.DepthData.ProjectionMatrix, API_GL); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + ProjectionMatrixInfo.GetDepthRange(&OutputDepthRange); + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::GL::Renderer::RenderAO( + const GFSDK_SSAO_InputData_GL& InputData, + const GFSDK_SSAO_Parameters& Parameters, + const GFSDK_SSAO_Output_GL& Output, + GFSDK_SSAO_RenderMask RenderMask) +{ + GFSDK_SSAO_Status Status; + + Status = SetDataFlow(InputData, Parameters, Output); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + Status = m_RTs.PreCreate(m_GL, m_Options); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + GFSDK::SSAO::GL::AppState AppState; + AppState.Save(m_GL); + + Render(RenderMask); + + AppState.Restore(m_GL); + +#if ENABLE_RENDER_TIMES + m_TimestampQueries.GetAvailableTimers(&s_RenderTimes); +#endif + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::GL::Renderer::SetInputData(const GFSDK_SSAO_InputData_GL& InputData) +{ + GFSDK_SSAO_Status Status; + + Status = SetInputDepths(InputData.DepthData); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + Status = SetInputNormals(InputData.NormalData); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::GL::Renderer::SetDataFlow( + const GFSDK_SSAO_InputData_GL& InputData, + const GFSDK_SSAO_Parameters& Parameters, + const GFSDK_SSAO_Output_GL& Output) +{ + GFSDK_SSAO_Status Status; + + Status = SetInputData(InputData); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + Status = SetAOParameters(Parameters); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + Status = SetOutput(Output); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + Status = ValidateDataFlow(); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::GL::Renderer::SetInputDepths(const GFSDK_SSAO_InputDepthData_GL& DepthData) +{ + m_InputDepth = GFSDK::SSAO::GL::InputDepthInfo(); + + GFSDK_SSAO_Status Status = m_InputDepth.SetData(m_GL, DepthData); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + m_GlobalCB.SetDepthData(m_InputDepth); + + SetAOResolution(UINT(m_InputDepth.Texture.Width), UINT(m_InputDepth.Texture.Height)); + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::GL::Renderer::SetInputNormals(const GFSDK_SSAO_InputNormalData_GL& NormalData) +{ + m_InputNormal = GFSDK::SSAO::GL::InputNormalInfo(); + + if (!NormalData.Enable) + { + // Input normals disabled. In this case, the lib reconstructs normals from depths. + return GFSDK_SSAO_OK; + } + + GFSDK_SSAO_Status Status = m_InputNormal.SetData(m_GL, NormalData); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + m_GlobalCB.SetNormalData(NormalData); + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::GL::Renderer::SetOutput(const GFSDK_SSAO_Output_GL& Output) +{ + m_Output = GFSDK::SSAO::GL::OutputInfo(); + + GFSDK_SSAO_Status Status = m_Output.Init(Output); + if (Status != GFSDK_SSAO_OK) + { + return Status; + } + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GL::Renderer::SetAOResolution(UINT Width, UINT Height) +{ + if (Width != m_RTs.GetFullWidth() || + Height != m_RTs.GetFullHeight()) + { + m_RTs.ReleaseResources(m_GL); + m_RTs.SetFullResolution(Width, Height); + m_Viewports.SetFullResolution(Width, Height); + m_GlobalCB.SetResolutionConstants(m_Viewports); + } +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::GL::Renderer::ValidateDataFlow() +{ + if (m_InputNormal.Texture.IsSet()) + { + if (m_InputNormal.Texture.Width != m_InputDepth.Texture.Width || + m_InputNormal.Texture.Height != m_InputDepth.Texture.Height) + { + return GFSDK_SSAO_INVALID_NORMAL_TEXTURE_RESOLUTION; + } + if (m_InputNormal.Texture.SampleCount != m_InputDepth.Texture.SampleCount) + { + return GFSDK_SSAO_INVALID_NORMAL_TEXTURE_SAMPLE_COUNT; + } + } + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +GFSDK_SSAO_Status GFSDK::SSAO::GL::Renderer::SetAOParameters(const GFSDK_SSAO_Parameters& Params) +{ + if (Params.Blur.Enable != m_Options.Blur.Enable || + Params.DepthStorage != m_Options.DepthStorage) + { + m_RTs.ReleaseResources(m_GL); + } + + m_GlobalCB.SetAOParameters(Params, m_InputDepth); + m_Options.SetRenderOptions(Params); + + return GFSDK_SSAO_OK; +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GL::Renderer::Render(GFSDK_SSAO_RenderMask RenderMask) +{ + m_GlobalCB.UpdateBuffer(m_GL, RenderMask); + + SetFullscreenState(); + + RenderHBAOPlus(RenderMask); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GL::Renderer::SetFullscreenState() +{ + m_States.SetRasterizerStateFullscreenNoScissor(m_GL); + m_States.SetDepthStencilStateDisabled(m_GL); + m_States.SetBlendStateDisabled(m_GL); + m_States.SetSharedBlendState(m_GL); + + // Our draw calls do not source any vertex or index buffers + // but we still need to bind a dummy VAO to avoid GL errors on OSX + m_VAO.Bind(m_GL); + + SetFullViewport(); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GL::Renderer::RenderHBAOPlus(GFSDK_SSAO_RenderMask RenderMask) +{ + ASSERT_GL_ERROR(m_GL); + + if (RenderMask & GFSDK_SSAO_DRAW_Z) + { + DrawLinearDepth(GetCopyDepthPS()); + } + + if (RenderMask & GFSDK_SSAO_DRAW_DEBUG_N) + { + DrawDebugNormals(m_Shaders.DebugNormals_PS.Get(GetFetchNormalPermutation())); + } + + if (RenderMask & GFSDK_SSAO_DRAW_AO) + { + DrawDeinterleavedDepth(m_Shaders.DeinterleaveDepth_PS.Get()); + + if (!m_InputNormal.Texture.IsSet()) + { + DrawReconstructedNormal(m_Shaders.ReconstructNormal_PS.Get()); + } + + DrawCoarseAO(m_Shaders.CoarseAO_PS.Get(GetEnableForegroundAOPermutation(), GetEnableBackgroundAOPermutation(), GetEnableDepthThresholdPermutation(), GetFetchNormalPermutation())); + + if (m_Options.Blur.Enable) + { + DrawReinterleavedAO_PreBlur(m_Shaders.ReinterleaveAO_PS.Get(GetEnableBlurPermutation())); + DrawBlurX(m_Shaders.BlurX_PS.Get(GetEnableSharpnessProfilePermutation(), GetBlurKernelRadiusPermutation())); + DrawBlurY(m_Shaders.BlurY_PS.Get(GetEnableSharpnessProfilePermutation(), GetBlurKernelRadiusPermutation())); + } + else + { + DrawReinterleavedAO(m_Shaders.ReinterleaveAO_PS.Get(GetEnableBlurPermutation())); + } + } +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GL::Renderer::DrawLinearDepth(GFSDK::SSAO::GL::GLSLPrograms::CopyDepth_PS& Program) +{ +#if ENABLE_RENDER_TIMES + GFSDK::SSAO::GL::GPUTimer timer(&m_TimestampQueries, GFSDK::SSAO::REGIME_TIME_LINEAR_Z); +#endif + + if (m_InputDepth.DepthTextureType == GFSDK_SSAO_VIEW_DEPTHS && + m_InputDepth.Texture.SampleCount == 1 && + m_InputDepth.Viewport.RectCoversFullInputTexture) + { + m_FullResViewDepthTextureId = m_InputDepth.Texture.GLTexture.TextureId; + return; + } + + { + m_GL.glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_RTs.GetFullResViewDepthTexture(m_GL)->GetFramebuffer()); + + Program.Enable(m_GL); + Program.SetDepthTexture(m_GL, m_InputDepth.Texture.GLTexture); + + m_GL.glDrawArrays(GL_TRIANGLES, 0, 3); + ASSERT_GL_ERROR(m_GL); + + m_FullResViewDepthTextureId = m_RTs.GetFullResViewDepthTexture(m_GL)->GetTexture().TextureId; + } +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GL::Renderer::DrawDebugNormals(GLSLPrograms::DebugNormals_PS& Program) +{ +#if ENABLE_RENDER_TIMES + GFSDK::SSAO::GL::GPUTimer timer(&m_TimestampQueries, GFSDK::SSAO::REGIME_TIME_NORMAL); +#endif + + m_States.SetBlendStateDisabled(m_GL); + + m_GL.glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_Output.FboId); + + Program.Enable(m_GL); + Program.SetDepthTexture(m_GL, m_FullResViewDepthTextureId, GetAODepthWrapMode()); + Program.SetNormalTexture(m_GL, m_InputNormal.Texture.GLTexture); + + m_GL.glDrawArrays(GL_TRIANGLES, 0, 3); + ASSERT_GL_ERROR(m_GL); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GL::Renderer::DrawDeinterleavedDepth(GLSLPrograms::DeinterleaveDepth_PS& Program) +{ +#if ENABLE_RENDER_TIMES + GFSDK::SSAO::GL::GPUTimer timer(&m_TimestampQueries, GFSDK::SSAO::REGIME_TIME_DEINTERLEAVE_Z); +#endif + + SetQuarterViewport(); + + Program.Enable(m_GL); + Program.SetDepthTexture(m_GL, m_FullResViewDepthTextureId); + + UINT PassIndex = 0; + for (UINT SliceIndex = 0; SliceIndex < 16; SliceIndex += MAX_NUM_MRTS) + { + m_GL.glBindBufferBase(GL_UNIFORM_BUFFER, m_PerPassCBs.GetBindingPoint(), m_PerPassCBs.GetBufferId(SliceIndex)); + m_GL.glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_RTs.GetQuarterResViewDepthTextureArray(m_GL, m_Options)->GetOctaSliceFramebuffer(PassIndex++)); + m_GL.glDrawArrays(GL_TRIANGLES, 0, 3); + } + + SetFullViewport(); + ASSERT_GL_ERROR(m_GL); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GL::Renderer::DrawReconstructedNormal(GLSLPrograms::ReconstructNormal_PS& Program) +{ +#if ENABLE_RENDER_TIMES + GFSDK::SSAO::GL::GPUTimer timer(&m_TimestampQueries, GFSDK::SSAO::REGIME_TIME_NORMAL); +#endif + + m_GL.glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_RTs.GetFullResNormalTexture(m_GL)->GetFramebuffer()); + + Program.Enable(m_GL); + Program.SetDepthTexture(m_GL, m_FullResViewDepthTextureId, GetAODepthWrapMode()); + + m_GL.glDrawArrays(GL_TRIANGLES, 0, 3); + ASSERT_GL_ERROR(m_GL); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GL::Renderer::DrawCoarseAO(GLSLPrograms::CoarseAO_PS& Program) +{ +#if ENABLE_RENDER_TIMES + GFSDK::SSAO::GL::GPUTimer timer(&m_TimestampQueries, GFSDK::SSAO::REGIME_TIME_COARSE_AO); +#endif + + SetQuarterViewport(); + + Program.Enable(m_GL); + Program.SetDepthTexture(m_GL, m_RTs.GetQuarterResViewDepthTextureArray(m_GL, m_Options)->GetTextureArray(), GetAODepthWrapMode()); + Program.SetNormalTexture(m_GL, GetFullResNormalTexture()); + + m_GL.glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_RTs.GetQuarterResAOTextureArray(m_GL)->GetLayeredFramebuffer()); + + for (UINT SliceIndex = 0; SliceIndex < 16; ++SliceIndex) + { + m_GL.glBindBufferBase(GL_UNIFORM_BUFFER, m_PerPassCBs.GetBindingPoint(), m_PerPassCBs.GetBufferId(SliceIndex)); + m_GL.glDrawArrays(GL_POINTS, 0, 1); + } + + SetFullViewport(); + ASSERT_GL_ERROR(m_GL); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GL::Renderer::DrawReinterleavedAO(GLSLPrograms::ReinterleaveAO_PS &Program) +{ +#if ENABLE_RENDER_TIMES + GFSDK::SSAO::GL::GPUTimer timer(&m_TimestampQueries, GFSDK::SSAO::REGIME_TIME_INTERLEAVE_AO); +#endif + + ASSERT(!m_Options.Blur.Enable); + + m_GL.glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_Output.FboId); + SetOutputBlendState(m_GL); + SetFullViewport(); + + Program.Enable(m_GL); + Program.SetAOTexture(m_GL, m_RTs.GetQuarterResAOTextureArray(m_GL)->GetTextureArray()); + + m_GL.glDrawArrays(GL_TRIANGLES, 0, 3); + ASSERT_GL_ERROR(m_GL); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GL::Renderer::DrawReinterleavedAO_PreBlur(GLSLPrograms::ReinterleaveAO_PS& Program) +{ +#if ENABLE_RENDER_TIMES + GFSDK::SSAO::GL::GPUTimer timer(&m_TimestampQueries, GFSDK::SSAO::REGIME_TIME_INTERLEAVE_AO); +#endif + + ASSERT(m_Options.Blur.Enable); + + m_GL.glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_RTs.GetFullResAOZTexture2(m_GL)->GetFramebuffer()); + + Program.Enable(m_GL); + Program.SetAOTexture(m_GL, m_RTs.GetQuarterResAOTextureArray(m_GL)->GetTextureArray()); + Program.SetDepthTexture(m_GL, m_FullResViewDepthTextureId); + + m_GL.glDrawArrays(GL_TRIANGLES, 0, 3); + ASSERT_GL_ERROR(m_GL); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GL::Renderer::DrawBlurX(GLSLPrograms::BlurX_PS &Program) +{ +#if ENABLE_RENDER_TIMES + GFSDK::SSAO::GL::GPUTimer timer(&m_TimestampQueries, GFSDK::SSAO::REGIME_TIME_BLURX); +#endif + + m_GL.glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_RTs.GetFullResAOZTexture(m_GL)->GetFramebuffer()); + + Program.Enable(m_GL); + Program.SetAODepthTexture(m_GL, m_RTs.GetFullResAOZTexture2(m_GL)->GetTexture().TextureId); + + m_GL.glDrawArrays(GL_TRIANGLES, 0, 3); + ASSERT_GL_ERROR(m_GL); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GL::Renderer::DrawBlurY(GLSLPrograms::BlurY_PS &Program) +{ +#if ENABLE_RENDER_TIMES + GFSDK::SSAO::GL::GPUTimer timer(&m_TimestampQueries, GFSDK::SSAO::REGIME_TIME_BLURY); +#endif + + m_GL.glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_Output.FboId); + SetOutputBlendState(m_GL); + SetFullViewport(); + + Program.Enable(m_GL); + Program.SetAODepthTexture(m_GL, m_RTs.GetFullResAOZTexture(m_GL)->GetTexture().TextureId); + + m_GL.glDrawArrays(GL_TRIANGLES, 0, 3); + ASSERT_GL_ERROR(m_GL); +} + +//-------------------------------------------------------------------------------- +UINT GFSDK::SSAO::GL::Renderer::GetAllocatedVideoMemoryBytes() +{ + return m_RTs.GetCurrentAllocatedVideoMemoryBytes(); +} + +#endif // SUPPORT_GL diff --git a/src/Renderer_GL.h b/src/Renderer_GL.h new file mode 100644 index 0000000..d87d754 --- /dev/null +++ b/src/Renderer_GL.h @@ -0,0 +1,223 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#if SUPPORT_GL + +#pragma once +#include "Common.h" +#include "ConstantBuffers.h" +#include "InputDepthInfo.h" +#include "InputNormalInfo.h" +#include "OutputInfo.h" +#include "ProjectionMatrixInfo.h" +#include "RenderOptions.h" +#include "RenderTargets_GL.h" +#include "Shaders_GL.h" +#include "States_GL.h" +#include "AppState_GL.h" +#include "TimestampQueries.h" +#include "BuildVersion.h" +#include "VAO_GL.h" + +namespace GFSDK +{ +namespace SSAO +{ +namespace GL +{ + +//-------------------------------------------------------------------------------- +class Renderer : public GFSDK_SSAO_Context_GL +{ +public: + Renderer(const GFSDK_SSAO_GLFunctions& GL, GFSDK_SSAO_CustomHeap NewDelete) + : m_GL(GL) + , m_NewDelete(NewDelete) + , m_FullResViewDepthTextureId(0) + { + } + + // + // API + // + + GFSDK_SSAO_Status Create(GFSDK_SSAO_Version HeaderVersion); + + UINT GetAllocatedVideoMemoryBytes(); + + void Release(); + + GFSDK_SSAO_Status PreCreateFBOs( + const GFSDK_SSAO_Parameters& Parameters, + UINT ViewportWidth, + UINT ViewportHeight); + + GFSDK_SSAO_Status GetProjectionMatrixDepthRange( + const GFSDK_SSAO_InputData_GL& InputData, + GFSDK_SSAO_ProjectionMatrixDepthRange& OutputDepthRange); + + GFSDK_SSAO_Status RenderAO( + const GFSDK_SSAO_InputData_GL& InputData, + const GFSDK_SSAO_Parameters& Parameters, + const GFSDK_SSAO_Output_GL& Output, + GFSDK_SSAO_RenderMask RenderMask = GFSDK_SSAO_RENDER_AO); + + // + // Internals + // + +#if ENABLE_RENDER_TIMES + static GFSDK::SSAO::RenderTimes s_RenderTimes; +#endif + +private: + void CreateResources(); + void ReleaseResources(); + void SetAOResolution(UINT Width, UINT Height); + + void SetFullscreenState(); + void Render(GFSDK_SSAO_RenderMask RenderMask); + void RenderHBAOPlus(GFSDK_SSAO_RenderMask RenderMask); + + Generated::ShaderPermutations::RESOLVE_DEPTH GetResolveDepthPermutation() + { + return (m_InputDepth.Texture.SampleCount == 1) ? Generated::ShaderPermutations::RESOLVE_DEPTH_0 : + Generated::ShaderPermutations::RESOLVE_DEPTH_1; + } + Generated::ShaderPermutations::FETCH_GBUFFER_NORMAL GetFetchNormalPermutation() + { + return (!m_InputNormal.Texture.IsSet()) ? Generated::ShaderPermutations::FETCH_GBUFFER_NORMAL_0 : + (m_InputNormal.Texture.SampleCount == 1) ? Generated::ShaderPermutations::FETCH_GBUFFER_NORMAL_1 : + Generated::ShaderPermutations::FETCH_GBUFFER_NORMAL_2; + } + Generated::ShaderPermutations::ENABLE_FOREGROUND_AO GetEnableForegroundAOPermutation() + { + return (m_Options.EnableForegroundAO) ? Generated::ShaderPermutations::ENABLE_FOREGROUND_AO_1 : + Generated::ShaderPermutations::ENABLE_FOREGROUND_AO_0; + } + Generated::ShaderPermutations::ENABLE_BACKGROUND_AO GetEnableBackgroundAOPermutation() + { + return (m_Options.EnableBackgroundAO) ? Generated::ShaderPermutations::ENABLE_BACKGROUND_AO_1 : + Generated::ShaderPermutations::ENABLE_BACKGROUND_AO_0; + } + Generated::ShaderPermutations::ENABLE_DEPTH_THRESHOLD GetEnableDepthThresholdPermutation() + { + return (m_Options.EnableDepthThreshold) ? Generated::ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1 : + Generated::ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0; + } + Generated::ShaderPermutations::ENABLE_BLUR GetEnableBlurPermutation() + { + return (m_Options.Blur.Enable) ? Generated::ShaderPermutations::ENABLE_BLUR_1 : + Generated::ShaderPermutations::ENABLE_BLUR_0; + } + Generated::ShaderPermutations::KERNEL_RADIUS GetBlurKernelRadiusPermutation() + { + return (m_Options.Blur.Radius == GFSDK_SSAO_BLUR_RADIUS_2) ? Generated::ShaderPermutations::KERNEL_RADIUS_2 : + Generated::ShaderPermutations::KERNEL_RADIUS_4; + } + Generated::ShaderPermutations::ENABLE_SHARPNESS_PROFILE GetEnableSharpnessProfilePermutation() + { + return (m_Options.Blur.SharpnessProfile.Enable) ? Generated::ShaderPermutations::ENABLE_SHARPNESS_PROFILE_1 : + Generated::ShaderPermutations::ENABLE_SHARPNESS_PROFILE_0; + } + GFSDK::SSAO::GL::GLSLPrograms::CopyDepth_PS& GetCopyDepthPS() + { + return (m_InputDepth.DepthTextureType == GFSDK_SSAO_VIEW_DEPTHS) ? + m_Shaders.CopyDepth_PS.Get(GetResolveDepthPermutation()) : + m_Shaders.LinearizeDepth_PS.Get(GetResolveDepthPermutation()); + } + + GLint GetAODepthWrapMode() + { + return (m_Options.DepthClampMode == GFSDK_SSAO_CLAMP_TO_EDGE) ? GL_CLAMP_TO_EDGE : GL_CLAMP_TO_BORDER; + } + GFSDK_SSAO_Texture_GL GetFullResNormalTexture() + { + return (m_InputNormal.Texture.IsSet()) ? m_InputNormal.Texture.GLTexture : m_RTs.GetFullResNormalTexture(m_GL)->GetTexture(); + } + + void DrawLinearDepth(GFSDK::SSAO::GL::GLSLPrograms::CopyDepth_PS& Program); + void DrawDebugNormals(GLSLPrograms::DebugNormals_PS& Program); + void DrawDeinterleavedDepth(GLSLPrograms::DeinterleaveDepth_PS& Program); + void DrawReconstructedNormal(GLSLPrograms::ReconstructNormal_PS& Program); + void DrawCoarseAO(GLSLPrograms::CoarseAO_PS& Program); + void DrawReinterleavedAO(GLSLPrograms::ReinterleaveAO_PS& Program); + void DrawReinterleavedAO_PreBlur(GLSLPrograms::ReinterleaveAO_PS& Program); + void DrawBlurX(GLSLPrograms::BlurX_PS &Program); + void DrawBlurY(GLSLPrograms::BlurY_PS &Program); + + GFSDK_SSAO_Status SetDataFlow(const GFSDK_SSAO_InputData_GL& InputData, const GFSDK_SSAO_Parameters& Parameters, const GFSDK_SSAO_Output_GL& Output); + GFSDK_SSAO_Status ValidateDataFlow(); + GFSDK_SSAO_Status SetInputData(const GFSDK_SSAO_InputData_GL& InputData); + GFSDK_SSAO_Status SetInputDepths(const GFSDK_SSAO_InputDepthData_GL& DepthData); + GFSDK_SSAO_Status SetInputNormals(const GFSDK_SSAO_InputNormalData_GL& NormalData); + GFSDK_SSAO_Status SetAOParameters(const GFSDK_SSAO_Parameters& Parameters); + GFSDK_SSAO_Status SetOutput(const GFSDK_SSAO_Output_GL& Output); + + void SetFullViewport() + { + m_GL.glViewport( + GLint(m_Viewports.FullRes.TopLeftX), + GLint(m_Viewports.FullRes.TopLeftY), + GLint(m_Viewports.FullRes.Width), + GLint(m_Viewports.FullRes.Height)); + } + + void SetQuarterViewport() + { + m_GL.glViewport( + GLint(m_Viewports.QuarterRes.TopLeftX), + GLint(m_Viewports.QuarterRes.TopLeftY), + GLint(m_Viewports.QuarterRes.Width), + GLint(m_Viewports.QuarterRes.Height)); + } + + void SetOutputBlendState(const GFSDK_SSAO_GLFunctions& GL) + { + if (m_Output.Blend.Mode == GFSDK_SSAO_OVERWRITE_RGB) + { + m_States.SetBlendStateDisabledPreserveAlpha(GL); + } + else if (m_Output.Blend.Mode == GFSDK_SSAO_MULTIPLY_RGB) + { + m_States.SetBlendStateMultiplyPreserveAlpha(GL); + } + else + { + m_States.SetCustomBlendState(GL, m_Output.Blend.CustomState); + } + } + + GFSDK::SSAO::GL::InputDepthInfo m_InputDepth; + GFSDK::SSAO::GL::InputNormalInfo m_InputNormal; + GFSDK::SSAO::GL::GlobalConstantBuffer m_GlobalCB; + GFSDK::SSAO::GL::PerPassConstantBuffers m_PerPassCBs; + GFSDK::SSAO::GL::RenderTargets m_RTs; + GFSDK::SSAO::GL::States m_States; + GFSDK::SSAO::GL::OutputInfo m_Output; + GFSDK::SSAO::GL::Shaders m_Shaders; + GFSDK::SSAO::GL::VAO m_VAO; + GFSDK::SSAO::GL::AppState m_AppState; + GFSDK::SSAO::RenderOptions m_Options; + GFSDK::SSAO::Viewports m_Viewports; + GLuint m_FullResViewDepthTextureId; + GFSDK_SSAO_CustomHeap m_NewDelete; + GFSDK_SSAO_GLFunctions m_GL; + GFSDK::SSAO::BuildVersion m_BuildVersion; +#if ENABLE_RENDER_TIMES + GFSDK::SSAO::GL::TimestampQueries m_TimestampQueries; +#endif +}; + +} // namespace GL +} // namespace SSAO +} // namespace GFSDK + +#endif // SUPPORT_GL diff --git a/src/Shaders_DX11.cpp b/src/Shaders_DX11.cpp new file mode 100644 index 0000000..7610100 --- /dev/null +++ b/src/Shaders_DX11.cpp @@ -0,0 +1,42 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#if SUPPORT_D3D11 + +#include "Shaders_DX11.h" + +namespace GFSDK +{ +namespace SSAO +{ +namespace D3D11 +{ + +#include "shaders/out/D3D11/FullScreenTriangle_VS.cpp" +#include "shaders/out/D3D11/CopyDepth_PS.cpp" +#include "shaders/out/D3D11/LinearizeDepth_PS.cpp" +#include "shaders/out/D3D11/DeinterleaveDepth_PS.cpp" +#include "shaders/out/D3D11/DebugNormals_PS.cpp" +#include "shaders/out/D3D11/ReconstructNormal_PS.cpp" +#include "shaders/out/D3D11/ReinterleaveAO_PS.cpp" +#include "shaders/out/D3D11/BlurX_PS.cpp" +#include "shaders/out/D3D11/BlurY_PS.cpp" +#include "shaders/out/D3D11/CoarseAO_PS.cpp" +#include "shaders/out/D3D11/CoarseAO_GS.cpp" + +#if ENABLE_DEBUG_MODES +#include "shaders/out/D3D11/DebugAO_PS.cpp" +#endif + +} // namespace D3D11 +} // namespace SSAO +} // namespace GFSDK + +#endif //SUPPORT_D3D11 diff --git a/src/Shaders_DX11.h b/src/Shaders_DX11.h new file mode 100644 index 0000000..cc8664d --- /dev/null +++ b/src/Shaders_DX11.h @@ -0,0 +1,204 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#if SUPPORT_D3D11 + +#pragma once +#include "Common.h" + +namespace GFSDK +{ +namespace SSAO +{ +namespace D3D11 +{ + +//-------------------------------------------------------------------------------- +struct VertexShader +{ + VertexShader() : VS(NULL) + { + } + + void Create(ID3D11Device* pD3DDevice, const void *pShaderBytecode, SIZE_T BytecodeLength) + { + THROW_IF_FAILED(pD3DDevice->CreateVertexShader(pShaderBytecode, BytecodeLength, NULL, &VS)); + } + + void Release(ID3D11Device*) + { + SAFE_RELEASE(VS); + } + + operator ID3D11VertexShader*() const + { + return VS; + } + +private: + ID3D11VertexShader* VS; +}; + +//-------------------------------------------------------------------------------- +struct GeometryShader +{ + GeometryShader() : GS(NULL) + { + } + + void Create(ID3D11Device* pD3DDevice, const void *pShaderBytecode, SIZE_T BytecodeLength) + { + THROW_IF_FAILED(pD3DDevice->CreateGeometryShader(pShaderBytecode, BytecodeLength, NULL, &GS)); + } + + void Release(ID3D11Device*) + { + SAFE_RELEASE(GS); + } + + operator ID3D11GeometryShader*() const + { + return GS; + } + +private: + ID3D11GeometryShader* GS; +}; + +//-------------------------------------------------------------------------------- +struct PixelShader +{ + PixelShader() : PS(NULL) + { + } + + void Create(ID3D11Device* pD3DDevice, const void *pShaderBytecode, SIZE_T BytecodeLength) + { + THROW_IF_FAILED(pD3DDevice->CreatePixelShader(pShaderBytecode, BytecodeLength, NULL, &PS)); + } + + void Release(ID3D11Device*) + { + SAFE_RELEASE(PS); + } + + operator ID3D11PixelShader*() const + { + return PS; + } + +private: + ID3D11PixelShader* PS; +}; + +//-------------------------------------------------------------------------------- +struct DevicePointer +{ + DevicePointer(ID3D11Device* pDeviceIn) : pDevice(pDeviceIn) + { + } + + DevicePointer() : pDevice(NULL) + { + } + + operator ID3D11Device*() const + { + return pDevice; + } + +private: + ID3D11Device* pDevice; +}; + +//-------------------------------------------------------------------------------- +#include "shaders/out/D3D11/FullScreenTriangle_VS.h" +#include "shaders/out/D3D11/CopyDepth_PS.h" +#include "shaders/out/D3D11/LinearizeDepth_PS.h" +#include "shaders/out/D3D11/DeinterleaveDepth_PS.h" +#include "shaders/out/D3D11/DebugNormals_PS.h" +#include "shaders/out/D3D11/ReconstructNormal_PS.h" +#include "shaders/out/D3D11/ReinterleaveAO_PS.h" +#include "shaders/out/D3D11/BlurX_PS.h" +#include "shaders/out/D3D11/BlurY_PS.h" +#include "shaders/out/D3D11/CoarseAO_PS.h" +#include "shaders/out/D3D11/CoarseAO_GS.h" + +//-------------------------------------------------------------------------------- +struct Shaders +{ + void Create(ID3D11Device* pDevice) + { + FullScreenTriangle_VS.Create(DevicePointer(pDevice)); + CopyDepth_PS.Create(DevicePointer(pDevice)); + LinearizeDepth_PS.Create(DevicePointer(pDevice)); + DeinterleaveDepth_PS.Create(DevicePointer(pDevice)); + DebugNormals_PS.Create(DevicePointer(pDevice)); + ReconstructNormal_PS.Create(DevicePointer(pDevice)); + ReinterleaveAO_PS.Create(DevicePointer(pDevice)); + BlurX_PS.Create(DevicePointer(pDevice)); + BlurY_PS.Create(DevicePointer(pDevice)); + CoarseAO_PS.Create(DevicePointer(pDevice)); + CoarseAO_GS.Create(DevicePointer(pDevice)); + } + + void Release() + { + FullScreenTriangle_VS.Release(DevicePointer()); + CopyDepth_PS.Release(DevicePointer()); + LinearizeDepth_PS.Release(DevicePointer()); + DeinterleaveDepth_PS.Release(DevicePointer()); + DebugNormals_PS.Release(DevicePointer()); + ReconstructNormal_PS.Release(DevicePointer()); + ReinterleaveAO_PS.Release(DevicePointer()); + BlurX_PS.Release(DevicePointer()); + BlurY_PS.Release(DevicePointer()); + CoarseAO_PS.Release(DevicePointer()); + CoarseAO_GS.Release(DevicePointer()); + } + + Generated::FullScreenTriangle_VS FullScreenTriangle_VS; + Generated::CopyDepth_PS CopyDepth_PS; + Generated::LinearizeDepth_PS LinearizeDepth_PS; + Generated::DeinterleaveDepth_PS DeinterleaveDepth_PS; + Generated::DebugNormals_PS DebugNormals_PS; + Generated::ReconstructNormal_PS ReconstructNormal_PS; + Generated::ReinterleaveAO_PS ReinterleaveAO_PS; + Generated::BlurX_PS BlurX_PS; + Generated::BlurY_PS BlurY_PS; + Generated::CoarseAO_PS CoarseAO_PS; + Generated::CoarseAO_GS CoarseAO_GS; +}; + +#if ENABLE_DEBUG_MODES + +#include "shaders/out/D3D11/DebugAO_PS.h" + +struct DebugShaders +{ + void Create(ID3D11Device* pDevice) + { + DebugAO_PS.Create(DevicePointer(pDevice)); + } + void Release() + { + DebugAO_PS.Release(DevicePointer()); + } + + Generated::DebugAO_PS DebugAO_PS; +}; + +#endif //ENABLE_DEBUG_MODES + +} // namespace D3D11 +} // namespace SSAO +} // namespace GFSDK + +#endif // SUPPORT_D3D11 diff --git a/src/Shaders_DX12.cpp b/src/Shaders_DX12.cpp new file mode 100644 index 0000000..db6154d --- /dev/null +++ b/src/Shaders_DX12.cpp @@ -0,0 +1,38 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#if SUPPORT_D3D12 + +#include "Shaders_DX12.h" + +namespace GFSDK +{ +namespace SSAO +{ +namespace D3D12 +{ + +#include "shaders/out/D3D11/FullScreenTriangle_VS.cpp" +#include "shaders/out/D3D11/CopyDepth_PS.cpp" +#include "shaders/out/D3D11/LinearizeDepth_PS.cpp" +#include "shaders/out/D3D11/DeinterleaveDepth_PS.cpp" +#include "shaders/out/D3D11/DebugNormals_PS.cpp" +#include "shaders/out/D3D11/ReconstructNormal_PS.cpp" +#include "shaders/out/D3D11/ReinterleaveAO_PS.cpp" +#include "shaders/out/D3D11/BlurX_PS.cpp" +#include "shaders/out/D3D11/BlurY_PS.cpp" +#include "shaders/out/D3D11/CoarseAO_PS.cpp" +#include "shaders/out/D3D11/CoarseAO_GS.cpp" + +} // namespace D3D12 +} // namespace SSAO +} // namespace GFSDK + +#endif //SUPPORT_D3D12 diff --git a/src/Shaders_DX12.h b/src/Shaders_DX12.h new file mode 100644 index 0000000..a210296 --- /dev/null +++ b/src/Shaders_DX12.h @@ -0,0 +1,220 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#if SUPPORT_D3D12 + +#pragma once +#include "Common.h" + +namespace GFSDK +{ +namespace SSAO +{ +namespace D3D12 +{ +//-------------------------------------------------------------------------------- +struct VertexShader +{ + VertexShader() + { + // Use proper heap here @jihoc + VS.BytecodeLength = 0; + VS.pShaderBytecode = nullptr; + } + + void Create(ID3D12Device* pD3DDevice, const void *pShaderBytecode, SIZE_T BytecodeLength) + { + VS.pShaderBytecode = pShaderBytecode; + VS.BytecodeLength = BytecodeLength; + } + + void Release(ID3D12Device*) + { + VS.pShaderBytecode = nullptr; + VS.BytecodeLength = 0; + } + + operator GFSDK_D3D12_VertexShader*() + { + return &VS; + } + +private: + GFSDK_D3D12_VertexShader VS; +}; + +//-------------------------------------------------------------------------------- +struct GeometryShader +{ + GeometryShader() + { + GS.BytecodeLength = 0; + GS.pShaderBytecode = nullptr; + } + + void Create(ID3D12Device* pD3DDevice, const void *pShaderBytecode, SIZE_T BytecodeLength) + { + GS.pShaderBytecode = pShaderBytecode; + GS.BytecodeLength = BytecodeLength; + } + + void Release(ID3D12Device*) + { + GS.pShaderBytecode = nullptr; + GS.BytecodeLength = 0; + } + + operator GFSDK_D3D12_GeometryShader*() + { + return &GS; + } + +private: + GFSDK_D3D12_GeometryShader GS; +}; + +//-------------------------------------------------------------------------------- +struct PixelShader +{ + PixelShader() + { + PS.BytecodeLength = 0; + PS.pShaderBytecode = nullptr; + } + + void Create(ID3D12Device* pD3DDevice, const void *pShaderBytecode, SIZE_T BytecodeLength) + { + PS.BytecodeLength = BytecodeLength; + PS.pShaderBytecode = pShaderBytecode; + } + + void Release(ID3D12Device*) + { + PS.pShaderBytecode = nullptr; + PS.BytecodeLength = 0; + } + + operator GFSDK_D3D12_PixelShader*() + { + return &PS; + } + +private: + GFSDK_D3D12_PixelShader PS; +}; + +//-------------------------------------------------------------------------------- +struct DevicePointer +{ + DevicePointer(ID3D12Device* pDeviceIn) : pDevice(pDeviceIn) + { + } + + DevicePointer() : pDevice(NULL) + { + } + + operator ID3D12Device*() const + { + return pDevice; + } + +private: + ID3D12Device* pDevice; +}; + +//-------------------------------------------------------------------------------- +#include "shaders/out/D3D11/FullScreenTriangle_VS.h" +#include "shaders/out/D3D11/CopyDepth_PS.h" +#include "shaders/out/D3D11/LinearizeDepth_PS.h" +#include "shaders/out/D3D11/DeinterleaveDepth_PS.h" +#include "shaders/out/D3D11/DebugNormals_PS.h" +#include "shaders/out/D3D11/ReconstructNormal_PS.h" +#include "shaders/out/D3D11/ReinterleaveAO_PS.h" +#include "shaders/out/D3D11/BlurX_PS.h" +#include "shaders/out/D3D11/BlurY_PS.h" +#include "shaders/out/D3D11/CoarseAO_PS.h" +#include "shaders/out/D3D11/CoarseAO_GS.h" + +//-------------------------------------------------------------------------------- +struct Shaders +{ + void Create(ID3D12Device* pDevice) + { + FullScreenTriangle_VS.Create(DevicePointer(pDevice)); + CopyDepth_PS.Create(DevicePointer(pDevice)); + LinearizeDepth_PS.Create(DevicePointer(pDevice)); + DeinterleaveDepth_PS.Create(DevicePointer(pDevice)); + DebugNormals_PS.Create(DevicePointer(pDevice)); + ReconstructNormal_PS.Create(DevicePointer(pDevice)); + ReinterleaveAO_PS.Create(DevicePointer(pDevice)); + BlurX_PS.Create(DevicePointer(pDevice)); + BlurY_PS.Create(DevicePointer(pDevice)); + CoarseAO_PS.Create(DevicePointer(pDevice)); + CoarseAO_GS.Create(DevicePointer(pDevice)); + } + + void Release() + { + FullScreenTriangle_VS.Release(DevicePointer()); + CopyDepth_PS.Release(DevicePointer()); + LinearizeDepth_PS.Release(DevicePointer()); + DeinterleaveDepth_PS.Release(DevicePointer()); + DebugNormals_PS.Release(DevicePointer()); + ReconstructNormal_PS.Release(DevicePointer()); + ReinterleaveAO_PS.Release(DevicePointer()); + BlurX_PS.Release(DevicePointer()); + BlurY_PS.Release(DevicePointer()); + CoarseAO_PS.Release(DevicePointer()); + CoarseAO_GS.Release(DevicePointer()); + } + + Generated::FullScreenTriangle_VS FullScreenTriangle_VS; + Generated::CopyDepth_PS CopyDepth_PS; + Generated::LinearizeDepth_PS LinearizeDepth_PS; + Generated::DeinterleaveDepth_PS DeinterleaveDepth_PS; + Generated::DebugNormals_PS DebugNormals_PS; + Generated::ReconstructNormal_PS ReconstructNormal_PS; + Generated::ReinterleaveAO_PS ReinterleaveAO_PS; + Generated::BlurX_PS BlurX_PS; + Generated::BlurY_PS BlurY_PS; + Generated::CoarseAO_PS CoarseAO_PS; + Generated::CoarseAO_GS CoarseAO_GS; +}; + +#if ENABLE_DEBUG_MODES + +#include "shaders/out/D3D11/HBAO_PS.h" +#include "shaders/out/D3D11/DebugAO_PS.h" + +struct DebugShaders +{ + void Create(ID3D12Device* pDevice) + { + HBAO_PS.Create(pDevice); + DebugAO_PS.Create(pDevice); + } + void Release() + { + HBAO_PS.Release(); + DebugAO_PS.Release(); + } + + Generated::HBAO_PS HBAO_PS; + Generated::DebugAO_PS DebugAO_PS; +}; + +#endif //ENABLE_DEBUG_MODES + +} // namespace D3D12 +} // namespace SSAO +} // namespace GFSDK + +#endif // SUPPORT_D3D12 diff --git a/src/Shaders_GL.cpp b/src/Shaders_GL.cpp new file mode 100644 index 0000000..690eaed --- /dev/null +++ b/src/Shaders_GL.cpp @@ -0,0 +1,190 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#if SUPPORT_GL + +#include "Shaders_GL.h" + +using namespace GFSDK::SSAO::GL; + +//-------------------------------------------------------------------------------- +static char* g_FullscreenTriangle_VS_GLSL = + (char*) STRINGIFY( + out vec4 VtxGeoOutput1; + void main() + { + vec2 TexCoords = vec2( (gl_VertexID << 1) & 2, gl_VertexID & 2 ); + gl_Position = vec4( TexCoords * vec2( 2.0, 2.0 ) + vec2( -1.0, -1.0) , 0.0, 1.0 ); + VtxGeoOutput1 = vec4( TexCoords, 0.0, 0.0 ); + } + ); + +//-------------------------------------------------------------------------------- +void GLSLPrograms::CopyDepth_PS::Create(const GFSDK_SSAO_GLFunctions& GL, const char *FragmentShaderSource) +{ + GLSLProgram::Create(GL, g_FullscreenTriangle_VS_GLSL, FragmentShaderSource); + + m_DepthTexture = GetUniformLocation(GL, "g_t0"); + ASSERT(m_DepthTexture != -1); +} + +//-------------------------------------------------------------------------------- +void GLSLPrograms::LinearizeDepth_PS::Create(const GFSDK_SSAO_GLFunctions& GL, const char *FragmentShaderSource) +{ + GLSLProgram::Create(GL, g_FullscreenTriangle_VS_GLSL, FragmentShaderSource); + + m_DepthTexture = GetUniformLocation(GL, "g_t0"); + m_GlobalUniformBlock = GetUniformBlockIndex(GL, "GlobalConstantBuffer"); + + GL.glUniformBlockBinding(m_Program, m_GlobalUniformBlock, BaseConstantBuffer::BINDING_POINT_GLOBAL_UBO); + ASSERT_GL_ERROR(GL); +} + +//-------------------------------------------------------------------------------- +void GLSLPrograms::DeinterleaveDepth_PS::Create(const GFSDK_SSAO_GLFunctions& GL, const char *FragmentShaderSource) +{ + GLSLProgram::Create(GL, g_FullscreenTriangle_VS_GLSL, FragmentShaderSource); + + m_DepthTexture = GetUniformLocation(GL, "g_t0"); + m_GlobalUniformBlock = GetUniformBlockIndex(GL, "GlobalConstantBuffer"); + m_PerPassUniformBlock = GetUniformBlockIndex(GL, "PerPassConstantBuffer"); + + GL.glUniformBlockBinding(m_Program, m_GlobalUniformBlock, BaseConstantBuffer::BINDING_POINT_GLOBAL_UBO); + GL.glUniformBlockBinding(m_Program, m_PerPassUniformBlock, BaseConstantBuffer::BINDING_POINT_PER_PASS_UBO); + ASSERT_GL_ERROR(GL); +} + +//-------------------------------------------------------------------------------- +void GLSLPrograms::ReconstructNormal_PS::Create(const GFSDK_SSAO_GLFunctions& GL, const char *FragmentShaderSource) +{ + GLSLProgram::Create(GL, g_FullscreenTriangle_VS_GLSL, FragmentShaderSource); + + m_FullResDepthTexture = GetUniformLocation(GL, "g_t0"); + m_FullResNormalTexture = GetUniformLocation(GL, "g_t1"); + m_GlobalUniformBlock = GetUniformBlockIndex(GL, "GlobalConstantBuffer"); + + if (m_GlobalUniformBlock != GL_INVALID_INDEX) + { + GL.glUniformBlockBinding(m_Program, m_GlobalUniformBlock, BaseConstantBuffer::BINDING_POINT_GLOBAL_UBO); + } + + ASSERT_GL_ERROR(GL); +} + +//-------------------------------------------------------------------------------- +void GLSLPrograms::CoarseAO_PS::Create(const GFSDK_SSAO_GLFunctions& GL, const char *FragmentShaderSource) +{ + static const char *VertexShaderSource = + STRINGIFY( + void main() + { + gl_Position = vec4(0); + } + ); + + static const char *GeometryShaderSource = + // Must match the uniform declaration from shaders/out/GL/CoarseAO_PS.cpp + STRINGIFY( + layout(std140) uniform; + struct PerPassConstantBuffer_0_Type + { + vec4 f4Jitter; + vec2 f2Offset; + float fSliceIndex; + uint uSliceIndex; + }; + uniform PerPassConstantBuffer + { + PerPassConstantBuffer_0_Type PerPassConstantBuffer_0; + }; + ) + STRINGIFY( + layout(points) in; + layout(triangle_strip, max_vertices = 3) out; + + void main() + { + gl_Layer = int(PerPassConstantBuffer_0.uSliceIndex); + + for (int VertexID = 0; VertexID < 3; VertexID++) + { + vec2 texCoords = vec2( (VertexID << 1) & 2, VertexID & 2 ); + gl_Position = vec4( texCoords * vec2( 2.0, 2.0 ) + vec2( -1.0, -1.0) , 0.0, 1.0 ); + EmitVertex(); + } + EndPrimitive(); + } + ); + + GLSLProgram::Create(GL, VertexShaderSource, GeometryShaderSource, FragmentShaderSource); + + m_QuarterResDepthTexture = GetUniformLocation(GL, "g_t0"); + m_FullResNormalTexture = GetUniformLocation(GL, "g_t1"); + m_GlobalUniformBlock = GetUniformBlockIndex(GL, "GlobalConstantBuffer"); + m_PerPassUniformBlock = GetUniformBlockIndex(GL, "PerPassConstantBuffer"); + + GL.glUniformBlockBinding(m_Program, m_GlobalUniformBlock, BaseConstantBuffer::BINDING_POINT_GLOBAL_UBO); + GL.glUniformBlockBinding(m_Program, m_PerPassUniformBlock, BaseConstantBuffer::BINDING_POINT_PER_PASS_UBO); + ASSERT_GL_ERROR(GL); +} + +//-------------------------------------------------------------------------------- +void GLSLPrograms::ReinterleaveAO_PS::Create(const GFSDK_SSAO_GLFunctions& GL, const char *FragmentShaderSource) +{ + GLSLProgram::Create(GL, g_FullscreenTriangle_VS_GLSL, FragmentShaderSource); + + m_AOTexture = GetUniformLocation(GL, "g_t0"); + m_DepthTexture = GetUniformLocation(GL, "g_t1"); + m_GlobalUniformBlock = GetUniformBlockIndex(GL, "GlobalConstantBuffer"); + + if (m_GlobalUniformBlock != GL_INVALID_INDEX) + { + GL.glUniformBlockBinding(m_Program, m_GlobalUniformBlock, BaseConstantBuffer::BINDING_POINT_GLOBAL_UBO); + ASSERT_GL_ERROR(GL); + } +} + +//-------------------------------------------------------------------------------- +void GLSLPrograms::Blur_PS::Create(const GFSDK_SSAO_GLFunctions& GL, const char *FragmentShaderSource) +{ + GLSLProgram::Create(GL, g_FullscreenTriangle_VS_GLSL, FragmentShaderSource); + + m_AODepthTextureNearest = GetUniformLocation(GL, "g_t0"); + m_AODepthTextureLinear = GetUniformLocation(GL, "g_t1"); + m_GlobalUniformBlock = GetUniformBlockIndex(GL, "GlobalConstantBuffer"); + + GL.glUniformBlockBinding(m_Program, m_GlobalUniformBlock, BaseConstantBuffer::BINDING_POINT_GLOBAL_UBO); + ASSERT_GL_ERROR(GL); +} + +//-------------------------------------------------------------------------------- + +namespace GFSDK +{ +namespace SSAO +{ +namespace GL +{ + +#include "shaders/out/GL/CopyDepth_PS.cpp" +#include "shaders/out/GL/LinearizeDepth_PS.cpp" +#include "shaders/out/GL/DeinterleaveDepth_PS.cpp" +#include "shaders/out/GL/DebugNormals_PS.cpp" +#include "shaders/out/GL/ReconstructNormal_PS.cpp" +#include "shaders/out/GL/ReinterleaveAO_PS.cpp" +#include "shaders/out/GL/BlurX_PS.cpp" +#include "shaders/out/GL/BlurY_PS.cpp" +#include "shaders/out/GL/CoarseAO_PS.cpp" + +} // namespace GL +} // namespace SSAO +} // namespace GFSDK + +#endif // SUPPORT_GL diff --git a/src/Shaders_GL.h b/src/Shaders_GL.h new file mode 100644 index 0000000..a91a1d8 --- /dev/null +++ b/src/Shaders_GL.h @@ -0,0 +1,326 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#if SUPPORT_GL + +#pragma once +#include "Common.h" +#include "GLSLProgram.h" + +namespace GFSDK +{ +namespace SSAO +{ +namespace GL +{ + +namespace GLSLPrograms +{ + +//-------------------------------------------------------------------------- +class CopyDepth_PS : public GFSDK::SSAO::GL::GLSLProgram +{ +public: + CopyDepth_PS() + : m_DepthTexture(-1) + { + } + + void Create(const GFSDK_SSAO_GLFunctions& GL, const char *FragmentShaderSource); + + void Create(const GFSDK_SSAO_GLFunctions& GL, const char *FragmentShaderSource, size_t) + { + Create(GL, FragmentShaderSource); + } + + void SetDepthTexture(const GFSDK_SSAO_GLFunctions& GL, const GFSDK_SSAO_Texture_GL &Texture) + { + SetTexture(GL, Texture.Target, m_DepthTexture, Texture.TextureId, 0); + } + +protected: + GLint m_DepthTexture; +}; + +//-------------------------------------------------------------------------- +class LinearizeDepth_PS : public CopyDepth_PS +{ +public: + LinearizeDepth_PS() + : CopyDepth_PS() + , m_GlobalUniformBlock(GL_INVALID_INDEX) + { + } + + void Create(const GFSDK_SSAO_GLFunctions& GL, const char *FragmentShaderSource); + + void Create(const GFSDK_SSAO_GLFunctions& GL, const char *FragmentShaderSource, size_t) + { + Create(GL, FragmentShaderSource); + } + + void SetDepthTexture(const GFSDK_SSAO_GLFunctions& GL, const GFSDK_SSAO_Texture_GL &Texture) + { + SetTexture(GL, Texture.Target, m_DepthTexture, Texture.TextureId, 0); + } + +private: + GLuint m_GlobalUniformBlock; +}; + +//-------------------------------------------------------------------------- +class DeinterleaveDepth_PS : public GFSDK::SSAO::GL::GLSLProgram +{ +public: + DeinterleaveDepth_PS() + : m_DepthTexture(-1) + , m_GlobalUniformBlock(GL_INVALID_INDEX) + , m_PerPassUniformBlock(GL_INVALID_INDEX) + { + } + + void Create(const GFSDK_SSAO_GLFunctions& GL, const char *FragmentShaderSource); + + void Create(const GFSDK_SSAO_GLFunctions& GL, const char *FragmentShaderSource, size_t) + { + Create(GL, FragmentShaderSource); + } + + void SetDepthTexture(const GFSDK_SSAO_GLFunctions& GL, GLint TextureId) + { + SetTexture(GL, GL_TEXTURE_2D, m_DepthTexture, TextureId, 0); + } + +private: + GLint m_DepthTexture; + GLuint m_GlobalUniformBlock; + GLuint m_PerPassUniformBlock; +}; + +//-------------------------------------------------------------------------- +class ReconstructNormal_PS : public GFSDK::SSAO::GL::GLSLProgram +{ +public: + ReconstructNormal_PS() + : m_FullResDepthTexture(-1) + , m_FullResNormalTexture(-1) + , m_GlobalUniformBlock(GL_INVALID_INDEX) + , m_NormalMatrixUniformBlock(GL_INVALID_INDEX) + { + } + + void Create(const GFSDK_SSAO_GLFunctions& GL, const char *FragmentShaderSource); + + void Create(const GFSDK_SSAO_GLFunctions& GL, const char *FragmentShaderSource, size_t) + { + Create(GL, FragmentShaderSource); + } + + void SetDepthTexture(const GFSDK_SSAO_GLFunctions& GL, GLint TextureId, GLint WrapMode) + { + if (m_FullResDepthTexture != -1) + { + SetTexture(GL, GL_TEXTURE_2D, m_FullResDepthTexture, TextureId, 0, GL_NEAREST, WrapMode); + } + } + + void SetNormalTexture(const GFSDK_SSAO_GLFunctions& GL, const GFSDK_SSAO_Texture_GL &Texture) + { + if (m_FullResNormalTexture != -1) + { + SetTexture(GL, Texture.Target, m_FullResNormalTexture, Texture.TextureId, 1); + } + } + +private: + GLint m_FullResDepthTexture; + GLint m_FullResNormalTexture; + GLuint m_GlobalUniformBlock; + GLuint m_NormalMatrixUniformBlock; +}; + +//-------------------------------------------------------------------------- +class DebugNormals_PS : public ReconstructNormal_PS +{ +}; + +//-------------------------------------------------------------------------- +class CoarseAO_PS : public GFSDK::SSAO::GL::GLSLProgram +{ +public: + CoarseAO_PS() + : m_QuarterResDepthTexture(-1) + , m_FullResNormalTexture(-1) + , m_GlobalUniformBlock(GL_INVALID_INDEX) + , m_PerPassUniformBlock(GL_INVALID_INDEX) + , m_NormalMatrixUniformBlock(GL_INVALID_INDEX) + { + } + + void Create(const GFSDK_SSAO_GLFunctions& GL, const char *FragmentShaderSource); + + void Create(const GFSDK_SSAO_GLFunctions& GL, const char *FragmentShaderSource, size_t) + { + Create(GL, FragmentShaderSource); + } + + void SetDepthTexture(const GFSDK_SSAO_GLFunctions& GL, GLint TextureId, GLint WrapMode) + { + SetTexture(GL, GL_TEXTURE_2D_ARRAY, m_QuarterResDepthTexture, TextureId, 0, GL_NEAREST, WrapMode); + } + + void SetNormalTexture(const GFSDK_SSAO_GLFunctions& GL, const GFSDK_SSAO_Texture_GL &Texture) + { + SetTexture(GL, Texture.Target, m_FullResNormalTexture, Texture.TextureId, 1); + } + +private: + GLint m_QuarterResDepthTexture; + GLint m_FullResNormalTexture; + GLuint m_GlobalUniformBlock; + GLuint m_PerPassUniformBlock; + GLuint m_NormalMatrixUniformBlock; +}; + +//-------------------------------------------------------------------------- +class ReinterleaveAO_PS : public GFSDK::SSAO::GL::GLSLProgram +{ +public: + ReinterleaveAO_PS() + : m_AOTexture(-1) + , m_DepthTexture(-1) + , m_GlobalUniformBlock(GL_INVALID_INDEX) + { + } + + void Create(const GFSDK_SSAO_GLFunctions& GL, const char *FragmentShaderSource); + + void Create(const GFSDK_SSAO_GLFunctions& GL, const char *FragmentShaderSource, size_t) + { + Create(GL, FragmentShaderSource); + } + + void SetAOTexture(const GFSDK_SSAO_GLFunctions& GL, GLint TextureId) + { + SetTexture(GL, GL_TEXTURE_2D_ARRAY, m_AOTexture, TextureId, 0); + } + + void SetDepthTexture(const GFSDK_SSAO_GLFunctions& GL, GLint TextureId) + { + SetTexture(GL, GL_TEXTURE_2D, m_DepthTexture, TextureId, 1); + } + +private: + GLint m_AOTexture; + GLint m_DepthTexture; + GLuint m_GlobalUniformBlock; +}; + +//-------------------------------------------------------------------------- +class Blur_PS : public GFSDK::SSAO::GL::GLSLProgram +{ +public: + Blur_PS() + : m_AODepthTextureNearest(-1) + , m_AODepthTextureLinear(-1) + , m_GlobalUniformBlock(GL_INVALID_INDEX) + { + } + + void Create(const GFSDK_SSAO_GLFunctions& GL, const char *FragmentShaderSource); + + void Create(const GFSDK_SSAO_GLFunctions& GL, const char *FragmentShaderSource, size_t) + { + Create(GL, FragmentShaderSource); + } + + void SetAODepthTexture(const GFSDK_SSAO_GLFunctions& GL, GLint TextureId) + { + SetTexture(GL, GL_TEXTURE_2D, m_AODepthTextureNearest, TextureId, 0, GL_NEAREST); + + if (m_AODepthTextureLinear != -1) + { + SetTexture(GL, GL_TEXTURE_2D, m_AODepthTextureLinear, TextureId, 1, GL_LINEAR); + } + } + +private: + GLint m_AODepthTextureNearest; + GLint m_AODepthTextureLinear; + GLuint m_GlobalUniformBlock; +}; + +class BlurX_PS : public Blur_PS +{ +}; + +class BlurY_PS : public Blur_PS +{ +}; + +} //namespace GLSLPrograms + +typedef GFSDK_SSAO_GLFunctions DevicePointer; + +#include "shaders/out/GL/CopyDepth_PS.h" +#include "shaders/out/GL/LinearizeDepth_PS.h" +#include "shaders/out/GL/DeinterleaveDepth_PS.h" +#include "shaders/out/GL/DebugNormals_PS.h" +#include "shaders/out/GL/ReconstructNormal_PS.h" +#include "shaders/out/GL/ReinterleaveAO_PS.h" +#include "shaders/out/GL/BlurX_PS.h" +#include "shaders/out/GL/BlurY_PS.h" +#include "shaders/out/GL/CoarseAO_PS.h" + +//-------------------------------------------------------------------------------- +struct Shaders +{ + Generated::CopyDepth_PS CopyDepth_PS; + Generated::LinearizeDepth_PS LinearizeDepth_PS; + Generated::DeinterleaveDepth_PS DeinterleaveDepth_PS; + Generated::DebugNormals_PS DebugNormals_PS; + Generated::ReconstructNormal_PS ReconstructNormal_PS; + Generated::ReinterleaveAO_PS ReinterleaveAO_PS; + Generated::BlurX_PS BlurX_PS; + Generated::BlurY_PS BlurY_PS; + Generated::CoarseAO_PS CoarseAO_PS; + + void Create(const GFSDK_SSAO_GLFunctions& GL) + { + CopyDepth_PS.Create(GL); + LinearizeDepth_PS.Create(GL); + DeinterleaveDepth_PS.Create(GL); + DebugNormals_PS.Create(GL); + ReconstructNormal_PS.Create(GL); + ReinterleaveAO_PS.Create(GL); + BlurX_PS.Create(GL); + BlurY_PS.Create(GL); + CoarseAO_PS.Create(GL); + } + + void Release(const GFSDK_SSAO_GLFunctions& GL) + { + CopyDepth_PS.Release(GL); + LinearizeDepth_PS.Release(GL); + DeinterleaveDepth_PS.Release(GL); + DebugNormals_PS.Release(GL); + ReconstructNormal_PS.Release(GL); + ReinterleaveAO_PS.Release(GL); + BlurX_PS.Release(GL); + BlurY_PS.Release(GL); + CoarseAO_PS.Release(GL); + } +}; + +} // namespace GL +} // namespace SSAO +} // namespace GFSDK + +#endif // SUPPORT_GL diff --git a/src/States_DX11.cpp b/src/States_DX11.cpp new file mode 100644 index 0000000..75dab26 --- /dev/null +++ b/src/States_DX11.cpp @@ -0,0 +1,191 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#if SUPPORT_D3D11 + +#include "States_DX11.h" + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::States::CreateBlendStates(ID3D11Device* pD3DDevice) +{ + // + // Create BlendState_Disabled + // + + D3D11_BLEND_DESC BlendStateDesc; + BlendStateDesc.AlphaToCoverageEnable = FALSE; + BlendStateDesc.IndependentBlendEnable = TRUE; + + for (UINT i = 0; i < SIZEOF_ARRAY(BlendStateDesc.RenderTarget); ++i) + { + BlendStateDesc.RenderTarget[i].BlendEnable = FALSE; + BlendStateDesc.RenderTarget[i].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL; + } + + SAFE_D3D_CALL( pD3DDevice->CreateBlendState(&BlendStateDesc, &m_pBlendState_Disabled) ); + + // + // Create BlendState_Multiply_PreserveAlpha + // + + BlendStateDesc.RenderTarget[0].BlendEnable = TRUE; + BlendStateDesc.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_RED | D3D11_COLOR_WRITE_ENABLE_GREEN | D3D11_COLOR_WRITE_ENABLE_BLUE; + BlendStateDesc.RenderTarget[0].SrcBlend = D3D11_BLEND_ZERO; + BlendStateDesc.RenderTarget[0].DestBlend = D3D11_BLEND_SRC_COLOR; + BlendStateDesc.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD; + BlendStateDesc.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_ZERO; + BlendStateDesc.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_ONE; + BlendStateDesc.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD; + + SAFE_D3D_CALL( pD3DDevice->CreateBlendState(&BlendStateDesc, &m_pBlendState_Multiply_PreserveAlpha) ); + + // + // Create BlendState_Disabled_PreserveAlpha + // + + BlendStateDesc.RenderTarget[0].BlendEnable = FALSE; + + SAFE_D3D_CALL( pD3DDevice->CreateBlendState(&BlendStateDesc, &m_pBlendState_Disabled_PreserveAlpha) ); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::States::CreateDepthStencilStates(ID3D11Device* pD3DDevice) +{ + // + // Create DepthStencilState_Disabled + // + + static D3D11_DEPTH_STENCIL_DESC DepthStencilDesc = + {0x0, //DepthEnable + D3D11_DEPTH_WRITE_MASK_ZERO, //DepthWriteMask + D3D11_COMPARISON_NEVER, //DepthFunc + 0x0, //StencilEnable + 0xFF, //StencilReadMask + 0xFF, //StencilWriteMask + + {D3D11_STENCIL_OP_KEEP, //StencilFailOp + D3D11_STENCIL_OP_KEEP, //StencilDepthFailOp + D3D11_STENCIL_OP_KEEP, //StencilPassOp + D3D11_COMPARISON_ALWAYS //StencilFunc + }, //FrontFace + + {D3D11_STENCIL_OP_KEEP, //StencilFailOp + D3D11_STENCIL_OP_KEEP, //StencilDepthFailOp + D3D11_STENCIL_OP_KEEP, //StencilPassOp + D3D11_COMPARISON_ALWAYS //StencilFunc + } //BackFace + }; + + SAFE_D3D_CALL( pD3DDevice->CreateDepthStencilState(&DepthStencilDesc, &m_pDepthStencilState_Disabled) ); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::States::CreateRasterizerStates(ID3D11Device* pD3DDevice) +{ + // + // Create RasterizerState_Fullscreen_NoScissor + // + + static D3D11_RASTERIZER_DESC D3D11_RASTERIZER_DESC_0 = + {D3D11_FILL_SOLID, //FillMode + D3D11_CULL_BACK, //CullMode + 0x0, //FrontCounterClockwise + 0x0/*0.000000f*/, //DepthBias + 0.f, //DepthBiasClamp + 0.f, //SlopeScaledDepthBias + 0x1, //DepthClipEnable + 0x0, //ScissorEnable + 0x0, //MultisampleEnable + 0x0 //AntialiasedLineEnable + }; + + SAFE_D3D_CALL( pD3DDevice->CreateRasterizerState(&D3D11_RASTERIZER_DESC_0, &m_pRasterizerState_Fullscreen_NoScissor) ); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::States::CreateSamplerStates(ID3D11Device* pD3DDevice) +{ + // + // Create SamplerState_PointClamp + // + + D3D11_SAMPLER_DESC SamplerDesc; + memset(&SamplerDesc, 0, sizeof(SamplerDesc)); + SamplerDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_POINT; + SamplerDesc.AddressU = D3D11_TEXTURE_ADDRESS_CLAMP; + SamplerDesc.AddressV = D3D11_TEXTURE_ADDRESS_CLAMP; + SamplerDesc.AddressW = D3D11_TEXTURE_ADDRESS_CLAMP; + SamplerDesc.MipLODBias = 0.0f; + SamplerDesc.MaxAnisotropy = 1; + SamplerDesc.ComparisonFunc = D3D11_COMPARISON_NEVER; + SamplerDesc.BorderColor[0] = -D3D11_FLOAT32_MAX; + SamplerDesc.MinLOD = 0; + SamplerDesc.MaxLOD = 0; + + SAFE_D3D_CALL( pD3DDevice->CreateSamplerState(&SamplerDesc, &m_pSamplerState_PointClamp) ); + + // + // Create SamplerState_PointBorder + // + + SamplerDesc.AddressU = D3D11_TEXTURE_ADDRESS_BORDER; + SamplerDesc.AddressV = D3D11_TEXTURE_ADDRESS_BORDER; + + SAFE_D3D_CALL( pD3DDevice->CreateSamplerState(&SamplerDesc, &m_pSamplerState_PointBorder) ); + + // + // Create SamplerState_LinearClamp + // + + SamplerDesc.Filter = D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT; + SamplerDesc.AddressU = D3D11_TEXTURE_ADDRESS_CLAMP; + SamplerDesc.AddressV = D3D11_TEXTURE_ADDRESS_CLAMP; + + SAFE_D3D_CALL( pD3DDevice->CreateSamplerState(&SamplerDesc, &m_pSamplerState_LinearClamp) ); + +#if ENABLE_DEBUG_MODES + // + // Create SamplerState_PointWrap + // + + SamplerDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_POINT; + SamplerDesc.AddressU = D3D11_TEXTURE_ADDRESS_WRAP; + SamplerDesc.AddressV = D3D11_TEXTURE_ADDRESS_WRAP; + + SAFE_D3D_CALL( pD3DDevice->CreateSamplerState(&SamplerDesc, &m_pSamplerState_PointWrap) ); +#endif +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::States::Create(ID3D11Device* pD3DDevice) +{ + CreateBlendStates(pD3DDevice); + CreateDepthStencilStates(pD3DDevice); + CreateRasterizerStates(pD3DDevice); + CreateSamplerStates(pD3DDevice); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D11::States::Release() +{ + SAFE_RELEASE(m_pBlendState_Disabled); + SAFE_RELEASE(m_pBlendState_Multiply_PreserveAlpha); + SAFE_RELEASE(m_pBlendState_Disabled_PreserveAlpha); + SAFE_RELEASE(m_pDepthStencilState_Disabled); + SAFE_RELEASE(m_pRasterizerState_Fullscreen_NoScissor); + SAFE_RELEASE(m_pSamplerState_PointClamp); + SAFE_RELEASE(m_pSamplerState_PointBorder); + SAFE_RELEASE(m_pSamplerState_LinearClamp); +#if ENABLE_DEBUG_MODES + SAFE_RELEASE(m_pSamplerState_PointWrap); +#endif +} + +#endif // SUPPORT_D3D11 diff --git a/src/States_DX11.h b/src/States_DX11.h new file mode 100644 index 0000000..3309d47 --- /dev/null +++ b/src/States_DX11.h @@ -0,0 +1,107 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#if SUPPORT_D3D11 + +#pragma once +#include "Common.h" + +namespace GFSDK +{ +namespace SSAO +{ +namespace D3D11 +{ + +//-------------------------------------------------------------------------------- +class States +{ +public: + States() + : m_pBlendState_Disabled(NULL) + , m_pBlendState_Multiply_PreserveAlpha(NULL) + , m_pBlendState_Disabled_PreserveAlpha(NULL) + , m_pDepthStencilState_Disabled(NULL) + , m_pRasterizerState_Fullscreen_NoScissor(NULL) + , m_pSamplerState_PointClamp(NULL) + , m_pSamplerState_PointBorder(NULL) + , m_pSamplerState_LinearClamp(NULL) +#if ENABLE_DEBUG_MODES + , m_pSamplerState_PointWrap(NULL) +#endif + { + } + + void Create(ID3D11Device* pD3DDevice); + void Release(); + + ID3D11BlendState* GetBlendStateMultiplyPreserveAlpha() + { + return m_pBlendState_Multiply_PreserveAlpha; + } + ID3D11BlendState* GetBlendStateDisabledPreserveAlpha() + { + return m_pBlendState_Disabled_PreserveAlpha; + } + ID3D11BlendState* GetBlendStateDisabled() + { + return m_pBlendState_Disabled; + } + ID3D11DepthStencilState* GetDepthStencilStateDisabled() + { + return m_pDepthStencilState_Disabled; + } + ID3D11RasterizerState* GetRasterizerStateFullscreenNoScissor() + { + return m_pRasterizerState_Fullscreen_NoScissor; + } + ID3D11SamplerState*& GetSamplerStatePointClamp() + { + return m_pSamplerState_PointClamp; + } + ID3D11SamplerState*& GetSamplerStatePointBorder() + { + return m_pSamplerState_PointBorder; + } + ID3D11SamplerState*& GetSamplerStateLinearClamp() + { + return m_pSamplerState_LinearClamp; + } +#if ENABLE_DEBUG_MODES + ID3D11SamplerState*& GetSamplerStatePointWrap() + { + return m_pSamplerState_PointWrap; + } +#endif + +private: + void CreateBlendStates(ID3D11Device* pD3DDevice); + void CreateDepthStencilStates(ID3D11Device* pD3DDevice); + void CreateRasterizerStates(ID3D11Device* pD3DDevice); + void CreateSamplerStates(ID3D11Device* pD3DDevice); + + ID3D11BlendState* m_pBlendState_Disabled; + ID3D11BlendState* m_pBlendState_Multiply_PreserveAlpha; + ID3D11BlendState* m_pBlendState_Disabled_PreserveAlpha; + ID3D11DepthStencilState* m_pDepthStencilState_Disabled; + ID3D11RasterizerState* m_pRasterizerState_Fullscreen_NoScissor; + ID3D11SamplerState* m_pSamplerState_PointClamp; + ID3D11SamplerState* m_pSamplerState_PointBorder; + ID3D11SamplerState* m_pSamplerState_LinearClamp; +#if ENABLE_DEBUG_MODES + ID3D11SamplerState* m_pSamplerState_PointWrap; +#endif +}; + +} // namespace D3D11 +} // namespace SSAO +} // namespace GFSDK + +#endif // SUPPORT_D3D11 diff --git a/src/States_DX12.cpp b/src/States_DX12.cpp new file mode 100644 index 0000000..9ecc623 --- /dev/null +++ b/src/States_DX12.cpp @@ -0,0 +1,200 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#if SUPPORT_D3D12 + +#include "States_DX12.h" + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::States::CreateBlendStates() +{ + // + // Create BlendState_Disabled + // + + D3D12_BLEND_DESC BlendStateDesc = {}; + BlendStateDesc.AlphaToCoverageEnable = FALSE; + BlendStateDesc.IndependentBlendEnable = TRUE; + + for (UINT i = 0; i < SIZEOF_ARRAY(BlendStateDesc.RenderTarget); ++i) + { + BlendStateDesc.RenderTarget[i].BlendEnable = FALSE; + BlendStateDesc.RenderTarget[i].RenderTargetWriteMask = D3D12_COLOR_WRITE_ENABLE_ALL; + } + + m_pBlendState_Disabled = BlendStateDesc; + //SAFE_D3D_CALL(pD3DDevice->CreateBlendState(&BlendStateDesc, &m_pBlendState_Disabled)); + + // + // Create BlendState_Multiply_PreserveAlpha + // + + BlendStateDesc.RenderTarget[0].BlendEnable = TRUE; + BlendStateDesc.RenderTarget[0].RenderTargetWriteMask = D3D12_COLOR_WRITE_ENABLE_RED | D3D12_COLOR_WRITE_ENABLE_GREEN | D3D12_COLOR_WRITE_ENABLE_BLUE; + BlendStateDesc.RenderTarget[0].SrcBlend = D3D12_BLEND_ZERO; + BlendStateDesc.RenderTarget[0].DestBlend = D3D12_BLEND_SRC_COLOR; + BlendStateDesc.RenderTarget[0].BlendOp = D3D12_BLEND_OP_ADD; + BlendStateDesc.RenderTarget[0].SrcBlendAlpha = D3D12_BLEND_ZERO; + BlendStateDesc.RenderTarget[0].DestBlendAlpha = D3D12_BLEND_ONE; + BlendStateDesc.RenderTarget[0].BlendOpAlpha = D3D12_BLEND_OP_ADD; + + m_pBlendState_Multiply_PreserveAlpha = BlendStateDesc; + //SAFE_D3D_CALL(pD3DDevice->CreateBlendState(&BlendStateDesc, &m_pBlendState_Multiply_PreserveAlpha)); + + // + // Create BlendState_Disabled_PreserveAlpha + // + + BlendStateDesc.RenderTarget[0].BlendEnable = FALSE; + + m_pBlendState_Disabled_PreserveAlpha = BlendStateDesc; + //SAFE_D3D_CALL(pD3DDevice->CreateBlendState(&BlendStateDesc, &m_pBlendState_Disabled_PreserveAlpha)); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::States::CreateDepthStencilStates() +{ + // + // Create DepthStencilState_Disabled + // + + static D3D12_DEPTH_STENCIL_DESC DepthStencilDesc = + { 0x0, //DepthEnable + D3D12_DEPTH_WRITE_MASK_ZERO, //DepthWriteMask + D3D12_COMPARISON_FUNC_NEVER, //DepthFunc + 0x0, //StencilEnable + 0xFF, //StencilReadMask + 0xFF, //StencilWriteMask + + { D3D12_STENCIL_OP_KEEP, //StencilFailOp + D3D12_STENCIL_OP_KEEP, //StencilDepthFailOp + D3D12_STENCIL_OP_KEEP, //StencilPassOp + D3D12_COMPARISON_FUNC_ALWAYS //StencilFunc + }, //FrontFace + + { D3D12_STENCIL_OP_KEEP, //StencilFailOp + D3D12_STENCIL_OP_KEEP, //StencilDepthFailOp + D3D12_STENCIL_OP_KEEP, //StencilPassOp + D3D12_COMPARISON_FUNC_ALWAYS //StencilFunc + } //BackFace + }; + + m_pDepthStencilState_Disabled = DepthStencilDesc; + //SAFE_D3D_CALL(pD3DDevice->CreateDepthStencilState(&DepthStencilDesc, &m_pDepthStencilState_Disabled)); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::States::CreateRasterizerStates() +{ + // + // Create RasterizerState_Fullscreen_NoScissor + // + + static D3D12_RASTERIZER_DESC D3D12_RASTERIZER_DESC_0 = + { D3D12_FILL_MODE_SOLID, //FillMode + D3D12_CULL_MODE_BACK, //CullMode + 0x0, //FrontCounterClockwise + 0x0/*0.000000f*/, //DepthBias + 0.f, //DepthBiasClamp + 0.f, //SlopeScaledDepthBias + 0x1, //DepthClipEnable + 0x0, //ScissorEnable + 0x0, //MultisampleEnable + 0x0 //AntialiasedLineEnable + }; + + m_pRasterizerState_Fullscreen_NoScissor = D3D12_RASTERIZER_DESC_0; + //SAFE_D3D_CALL(pD3DDevice->CreateRasterizerState(&D3D12_RASTERIZER_DESC_0, &m_pRasterizerState_Fullscreen_NoScissor)); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::States::CreateSamplerStates() +{ + // + // Create SamplerState_PointClamp + // + + D3D12_SAMPLER_DESC SamplerDesc; + memset(&SamplerDesc, 0, sizeof(SamplerDesc)); + SamplerDesc.Filter = D3D12_FILTER_MIN_MAG_MIP_POINT; + SamplerDesc.AddressU = D3D12_TEXTURE_ADDRESS_MODE_CLAMP;; + SamplerDesc.AddressV = D3D12_TEXTURE_ADDRESS_MODE_CLAMP; + SamplerDesc.AddressW = D3D12_TEXTURE_ADDRESS_MODE_CLAMP; + SamplerDesc.MipLODBias = 0.0f; + SamplerDesc.MaxAnisotropy = 1; + SamplerDesc.ComparisonFunc = D3D12_COMPARISON_FUNC_NEVER; + SamplerDesc.BorderColor[0] = -D3D12_FLOAT32_MAX; + SamplerDesc.MinLOD = 0; + SamplerDesc.MaxLOD = 0; + + m_pSamplerState_PointClamp = SamplerDesc; + //SAFE_D3D_CALL(pD3DDevice->CreateSamplerState(&SamplerDesc, &m_pSamplerState_PointClamp)); + + // + // Create SamplerState_PointBorder + // + + SamplerDesc.AddressU = D3D12_TEXTURE_ADDRESS_MODE_BORDER; + SamplerDesc.AddressV = D3D12_TEXTURE_ADDRESS_MODE_BORDER; + + m_pSamplerState_PointBorder = SamplerDesc; + //SAFE_D3D_CALL(pD3DDevice->CreateSamplerState(&SamplerDesc, &m_pSamplerState_PointBorder)); + + // + // Create SamplerState_LinearClamp + // + + SamplerDesc.Filter = D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT; + SamplerDesc.AddressU = D3D12_TEXTURE_ADDRESS_MODE_CLAMP; + SamplerDesc.AddressV = D3D12_TEXTURE_ADDRESS_MODE_CLAMP; + + m_pSamplerState_LinearClamp = SamplerDesc; + //SAFE_D3D_CALL(pD3DDevice->CreateSamplerState(&SamplerDesc, &m_pSamplerState_LinearClamp)); + +#if ENABLE_DEBUG_MODES + // + // Create SamplerState_PointWrap + // + + SamplerDesc.Filter = D3D12_FILTER_MIN_MAG_MIP_POINT; + SamplerDesc.AddressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP; + SamplerDesc.AddressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP; + + m_pSamplerState_PointWrap = SamplerDesc; + //SAFE_D3D_CALL(pD3DDevice->CreateSamplerState(&SamplerDesc, &m_pSamplerState_PointWrap)); +#endif +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::States::Create(GFSDK_D3D12_GraphicsContext* pD3DDevice) +{ + CreateBlendStates(); + CreateDepthStencilStates(); + CreateRasterizerStates(); + CreateSamplerStates(); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::D3D12::States::Release() +{ + //SAFE_RELEASE(m_pBlendState_Disabled); + //SAFE_RELEASE(m_pBlendState_Multiply_PreserveAlpha); + //SAFE_RELEASE(m_pBlendState_Disabled_PreserveAlpha); + //SAFE_RELEASE(m_pDepthStencilState_Disabled); + //SAFE_RELEASE(m_pRasterizerState_Fullscreen_NoScissor); + //SAFE_RELEASE(m_pSamplerState_PointClamp); + //SAFE_RELEASE(m_pSamplerState_PointBorder); + //SAFE_RELEASE(m_pSamplerState_LinearClamp); +#if ENABLE_DEBUG_MODES + //SAFE_RELEASE(m_pSamplerState_PointWrap); +#endif +} + +#endif // SUPPORT_D3D12 diff --git a/src/States_DX12.h b/src/States_DX12.h new file mode 100644 index 0000000..adf7bb8 --- /dev/null +++ b/src/States_DX12.h @@ -0,0 +1,95 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#if SUPPORT_D3D12 + +#pragma once +#include "Common.h" + +namespace GFSDK +{ +namespace SSAO +{ +namespace D3D12 +{ + +//-------------------------------------------------------------------------------- +class States +{ +public: + States() + { + } + + void Create(GFSDK_D3D12_GraphicsContext* pD3DDevice); + void Release(); + + D3D12_BLEND_DESC* GetBlendStateMultiplyPreserveAlpha() + { + return &m_pBlendState_Multiply_PreserveAlpha; + } + D3D12_BLEND_DESC* GetBlendStateDisabledPreserveAlpha() + { + return &m_pBlendState_Disabled_PreserveAlpha; + } + D3D12_BLEND_DESC* GetBlendStateDisabled() + { + return &m_pBlendState_Disabled; + } + D3D12_DEPTH_STENCIL_DESC* GetDepthStencilStateDisabled() + { + return &m_pDepthStencilState_Disabled; + } + D3D12_RASTERIZER_DESC* GetRasterizerStateFullscreenNoScissor() + { + return &m_pRasterizerState_Fullscreen_NoScissor; + } + D3D12_SAMPLER_DESC& GetSamplerStatePointClamp() + { + return m_pSamplerState_PointClamp; + } + D3D12_SAMPLER_DESC& GetSamplerStatePointBorder() + { + return m_pSamplerState_PointBorder; + } + D3D12_SAMPLER_DESC& GetSamplerStateLinearClamp() + { + return m_pSamplerState_LinearClamp; + } +#if ENABLE_DEBUG_MODES + D3D12_SAMPLER_DESC& GetSamplerStatePointWrap() + { + return m_pSamplerState_PointWrap; + } +#endif + +private: + void CreateBlendStates(); + void CreateDepthStencilStates(); + void CreateRasterizerStates(); + void CreateSamplerStates(); + + D3D12_BLEND_DESC m_pBlendState_Disabled; + D3D12_BLEND_DESC m_pBlendState_Multiply_PreserveAlpha; + D3D12_BLEND_DESC m_pBlendState_Disabled_PreserveAlpha; + D3D12_DEPTH_STENCIL_DESC m_pDepthStencilState_Disabled; + D3D12_RASTERIZER_DESC m_pRasterizerState_Fullscreen_NoScissor; + D3D12_SAMPLER_DESC m_pSamplerState_PointClamp; + D3D12_SAMPLER_DESC m_pSamplerState_PointBorder; + D3D12_SAMPLER_DESC m_pSamplerState_LinearClamp; +#if ENABLE_DEBUG_MODES + D3D12_SAMPLER_DESC m_pSamplerState_PointWrap; +#endif +}; + +} // namespace D3D12 +} // namespace SSAO +} // namespace GFSDK +#endif // SUPPORT_D3D12 diff --git a/src/States_GL.cpp b/src/States_GL.cpp new file mode 100644 index 0000000..f6e00e9 --- /dev/null +++ b/src/States_GL.cpp @@ -0,0 +1,97 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "States_GL.h" + +#if SUPPORT_GL + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GL::States::SetSharedBlendState(const GFSDK_SSAO_GLFunctions& GL) +{ +#if !USE_GLES + GL.glDisable(GL_COLOR_LOGIC_OP); +#endif + GL.glDisable(GL_SAMPLE_COVERAGE); + GL.glDisable(GL_SAMPLE_ALPHA_TO_COVERAGE); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GL::States::SetBlendStateMultiplyPreserveAlpha(const GFSDK_SSAO_GLFunctions& GL) +{ + GL.glColorMaski(0, GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE); + GL.glEnable(GL_BLEND); + GL.glBlendEquationSeparate(GL_FUNC_ADD, GL_FUNC_ADD); + GL.glBlendFuncSeparate(GL_ZERO, GL_SRC_COLOR, GL_ZERO, GL_ONE); + ASSERT_GL_ERROR(GL); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GL::States::SetBlendStateDisabledPreserveAlpha(const GFSDK_SSAO_GLFunctions& GL) +{ + GL.glColorMaski(0, GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE); + GL.glDisable(GL_BLEND); + ASSERT_GL_ERROR(GL); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GL::States::SetBlendStateDisabled(const GFSDK_SSAO_GLFunctions& GL) +{ + GL.glColorMaski(0, GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); + GL.glDisable(GL_BLEND); + ASSERT_GL_ERROR(GL); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GL::States::SetDepthStencilStateDisabled(const GFSDK_SSAO_GLFunctions& GL) +{ + GL.glDisable(GL_DEPTH_TEST); + GL.glDisable(GL_STENCIL_TEST); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GL::States::SetRasterizerStateFullscreenNoScissor(const GFSDK_SSAO_GLFunctions& GL) +{ + GL.glDisable(GL_CULL_FACE); + GL.glPolygonOffset(0.f, 0.f); + GL.glDisable(GL_SCISSOR_TEST); + GL.glDisable(GL_MULTISAMPLE); +} + +//-------------------------------------------------------------------------------- +void GFSDK::SSAO::GL::States::SetCustomBlendState(const GFSDK_SSAO_GLFunctions& GL, const GFSDK_SSAO_CustomBlendState_GL& CustomBlendState) +{ + GL.glEnable(GL_BLEND); + + GL.glBlendEquationSeparate( + CustomBlendState.BlendEquationSeparate.ModeRGB, + CustomBlendState.BlendEquationSeparate.ModeAlpha); + + GL.glBlendFuncSeparate( + CustomBlendState.BlendFuncSeparate.SrcRGB, + CustomBlendState.BlendFuncSeparate.DstRGB, + CustomBlendState.BlendFuncSeparate.SrcAlpha, + CustomBlendState.BlendFuncSeparate.DstAlpha); + + GL.glBlendColor( + CustomBlendState.BlendColor.R, + CustomBlendState.BlendColor.G, + CustomBlendState.BlendColor.B, + CustomBlendState.BlendColor.A); + + GL.glColorMaski(0, + CustomBlendState.ColorMask.R, + CustomBlendState.ColorMask.G, + CustomBlendState.ColorMask.B, + CustomBlendState.ColorMask.A); + + ASSERT_GL_ERROR(GL); +} + +#endif // SUPPORT_GL diff --git a/src/States_GL.h b/src/States_GL.h new file mode 100644 index 0000000..629cf1f --- /dev/null +++ b/src/States_GL.h @@ -0,0 +1,39 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#if SUPPORT_GL + +#pragma once +#include "Common.h" + +namespace GFSDK +{ +namespace SSAO +{ +namespace GL +{ + +class States +{ +public: + static void SetSharedBlendState(const GFSDK_SSAO_GLFunctions& GL); + static void SetBlendStateMultiplyPreserveAlpha(const GFSDK_SSAO_GLFunctions& GL); + static void SetBlendStateDisabledPreserveAlpha(const GFSDK_SSAO_GLFunctions& GL); + static void SetBlendStateDisabled(const GFSDK_SSAO_GLFunctions& GL); + static void SetDepthStencilStateDisabled(const GFSDK_SSAO_GLFunctions& GL); + static void SetRasterizerStateFullscreenNoScissor(const GFSDK_SSAO_GLFunctions& GL); + static void SetCustomBlendState(const GFSDK_SSAO_GLFunctions& GL, const GFSDK_SSAO_CustomBlendState_GL& CustomBlendState); +}; + +} // namespace GL +} // namespace SSAO +} // namespace GFSDK + +#endif // SUPPORT_GL diff --git a/src/TextureUtil.h b/src/TextureUtil.h new file mode 100644 index 0000000..442dcf8 --- /dev/null +++ b/src/TextureUtil.h @@ -0,0 +1,135 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#pragma once +#include "Common.h" + +namespace GFSDK +{ +namespace SSAO +{ + +#if SUPPORT_D3D11 + +namespace D3D11 +{ + +//-------------------------------------------------------------------------------- +class TextureUtil +{ +public: + static void GetDesc(ID3D11RenderTargetView* pRTV, D3D11_TEXTURE2D_DESC* pTextureDesc) + { + ID3D11Texture2D* pBaseTexture; + pRTV->GetResource((ID3D11Resource**)&pBaseTexture); + + pBaseTexture->GetDesc(pTextureDesc); + SAFE_RELEASE(pBaseTexture); + } + static void GetDesc(ID3D11ShaderResourceView* pSRV, D3D11_TEXTURE2D_DESC* pTextureDesc) + { + ID3D11Texture2D* pBaseTexture; + pSRV->GetResource((ID3D11Resource**)&pBaseTexture); + + pBaseTexture->GetDesc(pTextureDesc); + SAFE_RELEASE(pBaseTexture); + } + static void GetDesc(ID3D11DepthStencilView* pDSV, D3D11_TEXTURE2D_DESC* pTextureDesc) + { + ID3D11Texture2D* pBaseTexture; + pDSV->GetResource((ID3D11Resource**)&pBaseTexture); + + pBaseTexture->GetDesc(pTextureDesc); + SAFE_RELEASE(pBaseTexture); + } +}; + +} // namespace D3D11 + +#endif + +#if SUPPORT_D3D12 + +namespace D3D12 +{ + +//-------------------------------------------------------------------------------- +class TextureUtil +{ +public: + static void GetDesc(ID3D12Resource* pResource, D3D12_RESOURCE_DESC* pResourceDesc) + { + ZeroMemory(pResourceDesc, sizeof(D3D12_RESOURCE_DESC)); + *pResourceDesc = pResource->GetDesc(); + } +}; + +} // namespace D3D12 + +#endif + +#if SUPPORT_GL + +namespace GL +{ + +//-------------------------------------------------------------------------------- +struct TextureDesc2D +{ + TextureDesc2D() + : Width(0) + , Height(0) + , SampleCount(1) + { + } + + GLint Width; + GLint Height; + GLint SampleCount; +}; + +//-------------------------------------------------------------------------------- +class TextureUtil +{ +public: + static bool HasValidTextureTarget(GFSDK_SSAO_Texture_GL Texture) + { + return (Texture.Target == GL_TEXTURE_2D || Texture.Target == GL_TEXTURE_2D_MULTISAMPLE); + } + + static void GetDesc2D(const GFSDK_SSAO_GLFunctions& GL, GFSDK_SSAO_Texture_GL Texture, TextureDesc2D* pTextureDesc) + { + ASSERT(HasValidTextureTarget(Texture)); + ASSERT_GL_ERROR(GL); + + GL.glBindTexture(Texture.Target, Texture.TextureId); + ASSERT_GL_ERROR(GL); + + GL.glGetTexLevelParameteriv(Texture.Target, 0, GL_TEXTURE_WIDTH, &pTextureDesc->Width); + GL.glGetTexLevelParameteriv(Texture.Target, 0, GL_TEXTURE_HEIGHT, &pTextureDesc->Height); + ASSERT_GL_ERROR(GL); + + if (Texture.Target == GL_TEXTURE_2D_MULTISAMPLE) + { + GL.glGetTexLevelParameteriv(Texture.Target, 0, GL_TEXTURE_SAMPLES, &pTextureDesc->SampleCount); + ASSERT_GL_ERROR(GL); + } + + GL.glBindTexture(Texture.Target, 0); + ASSERT_GL_ERROR(GL); + } +}; + +} // namespace GL + +#endif + +} // namespace SSAO +} // namespace GFSDK diff --git a/src/TimestampQueries.h b/src/TimestampQueries.h new file mode 100644 index 0000000..0214975 --- /dev/null +++ b/src/TimestampQueries.h @@ -0,0 +1,340 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#if ENABLE_RENDER_TIMES + +#pragma once +#include "Common.h" + +namespace GFSDK +{ +namespace SSAO +{ + +//-------------------------------------------------------------------------------- + +enum GpuTimeRegimeIndex +{ + REGIME_TIME_LINEAR_Z, + REGIME_TIME_DEINTERLEAVE_Z, + REGIME_TIME_NORMAL, + REGIME_TIME_COARSE_AO, + REGIME_TIME_INTERLEAVE_AO, + REGIME_TIME_BLURX, + REGIME_TIME_BLURY, + REGIME_TIME_TOTAL, + REGIME_TIME_COUNT +}; + +enum GpuTimeRenderPassIndex +{ + RENDER_PASS_0, + RENDER_PASS_1, + RENDER_PASS_COUNT, +}; + +struct RenderTimes +{ + static GpuTimeRenderPassIndex SSAO::RenderTimes::CurrentPassIndex; + float GPUTimeMS[RENDER_PASS_COUNT][REGIME_TIME_COUNT]; +}; + +#if SUPPORT_D3D11 + +namespace D3D11 +{ + +//-------------------------------------------------------------------------------- +class TimestampQueries +{ +public: + void Create(ID3D11Device* pD3DDevice) + { + D3D11_QUERY_DESC queryDesc; + queryDesc.MiscFlags = 0; + + queryDesc.Query = D3D11_QUERY_TIMESTAMP_DISJOINT; + SAFE_D3D_CALL( pD3DDevice->CreateQuery(&queryDesc, &m_pDisjointTimestampQuery) ); + m_DisjointQueryInFlight = false; + + queryDesc.Query = D3D11_QUERY_TIMESTAMP; + for (UINT i = 0; i < REGIME_TIME_COUNT; ++i) + { + SAFE_D3D_CALL( pD3DDevice->CreateQuery(&queryDesc, &m_pTimestampQueriesBegin[i]) ); + SAFE_D3D_CALL( pD3DDevice->CreateQuery(&queryDesc, &m_pTimestampQueriesEnd[i]) ); + m_TimestampQueryInFlight[i] = false; + } + } + + void Release() + { + SAFE_RELEASE(m_pDisjointTimestampQuery); + + for (UINT i = 0; i < REGIME_TIME_COUNT; ++i) + { + SAFE_RELEASE(m_pTimestampQueriesBegin[i]); + SAFE_RELEASE(m_pTimestampQueriesEnd[i]); + } + } + + void Begin(ID3D11DeviceContext* pDeviceContext) + { + if (!m_DisjointQueryInFlight) + { + pDeviceContext->Begin(m_pDisjointTimestampQuery); + } + } + + void End(ID3D11DeviceContext* pDeviceContext, SSAO::RenderTimes* pRenderTimes) + { + if (!m_DisjointQueryInFlight) + { + pDeviceContext->End(m_pDisjointTimestampQuery); + } + m_DisjointQueryInFlight = true; + + D3D11_QUERY_DATA_TIMESTAMP_DISJOINT disjointTimestampValue; + if (pDeviceContext->GetData(m_pDisjointTimestampQuery, &disjointTimestampValue, sizeof(disjointTimestampValue), D3D11_ASYNC_GETDATA_DONOTFLUSH) == S_OK) + { + m_DisjointQueryInFlight = false; + + if (!disjointTimestampValue.Disjoint) + { + double InvFrequencyMS = 1000.0 / disjointTimestampValue.Frequency; + for (UINT i = 0; i < REGIME_TIME_COUNT; ++i) + { + if (m_TimestampQueryInFlight[i]) + { + UINT64 TimestampValueBegin; + UINT64 TimestampValueEnd; + if ((pDeviceContext->GetData(m_pTimestampQueriesBegin[i], &TimestampValueBegin, sizeof(UINT64), D3D11_ASYNC_GETDATA_DONOTFLUSH) == S_OK) && + (pDeviceContext->GetData(m_pTimestampQueriesEnd[i], &TimestampValueEnd, sizeof(UINT64), D3D11_ASYNC_GETDATA_DONOTFLUSH) == S_OK)) + { + m_TimestampQueryInFlight[i] = false; + pRenderTimes->GPUTimeMS[GFSDK::SSAO::RenderTimes::CurrentPassIndex][i] = float(double(TimestampValueEnd - TimestampValueBegin) * InvFrequencyMS); + } + } + else + { + pRenderTimes->GPUTimeMS[GFSDK::SSAO::RenderTimes::CurrentPassIndex][i] = 0.f; + } + } + } + } + } + + void StartTimer(ID3D11DeviceContext* pDeviceContext, GpuTimeRegimeIndex Id) + { + if (!m_TimestampQueryInFlight[Id]) + { + pDeviceContext->End(m_pTimestampQueriesBegin[Id]); + } + } + + void StopTimer(ID3D11DeviceContext* pDeviceContext, GpuTimeRegimeIndex Id) + { + if (!m_TimestampQueryInFlight[Id]) + { + pDeviceContext->End(m_pTimestampQueriesEnd[Id]); + } + m_TimestampQueryInFlight[Id] = true; + } + +private: + bool m_DisjointQueryInFlight; + bool m_TimestampQueryInFlight[REGIME_TIME_COUNT]; + ID3D11Query* m_pDisjointTimestampQuery; + ID3D11Query* m_pTimestampQueriesBegin[REGIME_TIME_COUNT]; + ID3D11Query* m_pTimestampQueriesEnd[REGIME_TIME_COUNT]; +}; + +//-------------------------------------------------------------------------------- +class GPUTimer +{ +public: + GPUTimer(TimestampQueries* pTimestampQueries, ID3D11DeviceContext* pDeviceContext, GpuTimeRegimeIndex Id) + : m_pTimestampQueries(pTimestampQueries) + , m_pDeviceContext(pDeviceContext) + , m_GpuTimeRegimeIndex(Id) + { + m_pTimestampQueries->StartTimer(m_pDeviceContext, m_GpuTimeRegimeIndex); + } + + ~GPUTimer() + { + m_pTimestampQueries->StopTimer(m_pDeviceContext, m_GpuTimeRegimeIndex); + } + +private: + TimestampQueries* m_pTimestampQueries; + ID3D11DeviceContext* m_pDeviceContext; + GpuTimeRegimeIndex m_GpuTimeRegimeIndex; +}; + +#define GPU_TIMER_SCOPE(NAME) GPUTimer Timer(&m_TimestampQueries, pDeviceContext, GFSDK::SSAO::REGIME_TIME_ ## NAME) + +} //namespace D3D11 + +#endif //SUPPORT_D3D11 + +#if SUPPORT_GL + +namespace GL +{ + +#if defined(_MSC_VER) && _MSC_VER < 1400 +typedef __int64 GLint64EXT; +typedef unsigned __int64 GLuint64EXT; +#elif defined(_MSC_VER) || defined(__BORLANDC__) +typedef signed long long GLint64EXT; +typedef unsigned long long GLuint64EXT; +#else +# if defined(__MINGW32__) || defined(__CYGWIN__) +#include +# endif +typedef int64_t GLint64EXT; +typedef uint64_t GLuint64EXT; +#endif +typedef GLint64EXT GLint64; +typedef GLuint64EXT GLuint64; + +//-------------------------------------------------------------------------------- +struct TimerQuery +{ + GLuint Query; + GLint64EXT Duration; + bool InFlight; +}; + +//-------------------------------------------------------------------------------- +class TimestampQueries +{ +public: + typedef struct + { + void (GFSDK_SSAO_STDCALL * glGenQueries) (GLsizei n, GLuint* ids); + void (GFSDK_SSAO_STDCALL * glDeleteQueries) (GLsizei n, const GLuint* ids); + void (GFSDK_SSAO_STDCALL * glGetQueryObjectiv) (GLuint id, GLenum pname, GLint* params); + void (GFSDK_SSAO_STDCALL * glGetQueryObjecti64vEXT) (GLuint id, GLenum pname, GLint64EXT *params); + void (GFSDK_SSAO_STDCALL * glBeginQuery) (GLenum target, GLuint id); + void (GFSDK_SSAO_STDCALL * glEndQuery) (GLenum target); + } GLFunctions; + + static GLFunctions GL; + + void Create() + { + for (UINT i = 0; i < REGIME_TIME_COUNT; i++) + { + GL.glGenQueries(1, &m_TimerQueries[i].Query); + m_TimerQueries[i].Duration = 0; + m_TimerQueries[i].InFlight = false; + } + } + + void Release() + { + for (UINT i = 0; i < REGIME_TIME_COUNT; i++) + { + GL.glDeleteQueries(1, &m_TimerQueries[i].Query); + m_TimerQueries[i].Query = 0; + m_TimerQueries[i].Duration = 0; + m_TimerQueries[i].InFlight = false; + } + } + + void UpdateTotalGpuTime(SSAO::RenderTimes* pRenderTimes) + { + pRenderTimes->GPUTimeMS[SSAO::RenderTimes::CurrentPassIndex][REGIME_TIME_TOTAL] = 0.f; + + for (UINT i = 0; i < REGIME_TIME_COUNT; ++i) + { + if (i != REGIME_TIME_TOTAL) + { + pRenderTimes->GPUTimeMS[SSAO::RenderTimes::CurrentPassIndex][REGIME_TIME_TOTAL] += pRenderTimes->GPUTimeMS[SSAO::RenderTimes::CurrentPassIndex][i]; + } + } + } + + void GetAvailableTimers(SSAO::RenderTimes* pRenderTimes) + { + for (UINT i = 0; i < REGIME_TIME_COUNT; ++i) + { + if (m_TimerQueries[i].InFlight) + { + GLint Available = 0; + GL.glGetQueryObjectiv(m_TimerQueries[i].Query, GL_QUERY_RESULT_AVAILABLE, &Available); + + if (Available) + { + GL.glGetQueryObjecti64vEXT(m_TimerQueries[i].Query, GL_QUERY_RESULT, &m_TimerQueries[i].Duration); + pRenderTimes->GPUTimeMS[SSAO::RenderTimes::CurrentPassIndex][i] = float(double(m_TimerQueries[i].Duration * 1.e-6)); + m_TimerQueries[i].InFlight = false; + } + } + else + { + pRenderTimes->GPUTimeMS[SSAO::RenderTimes::CurrentPassIndex][i] = 0.f; + } + } + + UpdateTotalGpuTime(pRenderTimes); + } + + void StartTimer(GpuTimeRegimeIndex Id) + { + if (!m_TimerQueries[Id].InFlight) + { + GL.glBeginQuery(GL_TIME_ELAPSED_EXT, m_TimerQueries[Id].Query); + } + } + + void StopTimer(GpuTimeRegimeIndex Id) + { + if (!m_TimerQueries[Id].InFlight) + { + GL.glEndQuery(GL_TIME_ELAPSED_EXT); + } + m_TimerQueries[Id].InFlight = true; + } + +private: + TimerQuery m_TimerQueries[REGIME_TIME_COUNT]; +}; + +//-------------------------------------------------------------------------------- +class GPUTimer +{ +public: + GPUTimer(TimestampQueries* pTimestampQueries, GpuTimeRegimeIndex Id) + : m_pTimestampQueries(pTimestampQueries) + , m_GpuTimeRegimeIndex(Id) + { + m_pTimestampQueries->StartTimer(Id); + } + + ~GPUTimer() + { + m_pTimestampQueries->StopTimer(m_GpuTimeRegimeIndex); + } + +private: + TimestampQueries* m_pTimestampQueries; + GpuTimeRegimeIndex m_GpuTimeRegimeIndex; +}; + +} //namespace GL + +#endif //SUPPORT_GL + +} // namespace SSAO +} // namespace GFSDK + +#endif // ENABLE_RENDER_TIMES diff --git a/src/UserTexture.h b/src/UserTexture.h new file mode 100644 index 0000000..57a22d5 --- /dev/null +++ b/src/UserTexture.h @@ -0,0 +1,257 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#pragma once +#include "Common.h" +#include "TextureUtil.h" + +namespace GFSDK +{ +namespace SSAO +{ + +//-------------------------------------------------------------------------------- +struct UserTextureDesc +{ + UserTextureDesc() + : Width(0) + , Height(0) + , SampleCount(0) + { + } + UINT Width; + UINT Height; + UINT SampleCount; +}; + +//-------------------------------------------------------------------------------- +#if SUPPORT_D3D11 +namespace D3D11 +{ + +struct UserTextureSRV : public SSAO::UserTextureDesc +{ + UserTextureSRV() + : pSRV(NULL) + { + } + + GFSDK_SSAO_Status Init(ID3D11ShaderResourceView* pInputSRV) + { + if (!pInputSRV) + { + return GFSDK_SSAO_NULL_ARGUMENT; + } + + D3D11_TEXTURE2D_DESC TextureDesc; + GFSDK::SSAO::D3D11::TextureUtil::GetDesc(pInputSRV, &TextureDesc); + + pSRV = pInputSRV; + Width = TextureDesc.Width; + Height = TextureDesc.Height; + SampleCount = TextureDesc.SampleDesc.Count; + + return GFSDK_SSAO_OK; + } + + bool IsSet() + { + return (pSRV != NULL); + } + + ID3D11ShaderResourceView* pSRV; +}; + +struct UserTextureRTV : public SSAO::UserTextureDesc +{ + UserTextureRTV() + : pRTV(NULL) + { + } + + GFSDK_SSAO_Status Init(ID3D11RenderTargetView* pInputRTV) + { + if (!pInputRTV) + { + return GFSDK_SSAO_NULL_ARGUMENT; + } + + D3D11_TEXTURE2D_DESC TextureDesc; + GFSDK::SSAO::D3D11::TextureUtil::GetDesc(pInputRTV, &TextureDesc); + + pRTV = pInputRTV; + Width = TextureDesc.Width; + Height = TextureDesc.Height; + SampleCount = TextureDesc.SampleDesc.Count; + + return GFSDK_SSAO_OK; + } + + bool IsSet() + { + return (pRTV != NULL); + } + + ID3D11RenderTargetView* pRTV; +}; + +struct UserTextureDSV : public SSAO::UserTextureDesc +{ + UserTextureDSV() + : pDSV(NULL) + { + } + + GFSDK_SSAO_Status Init(ID3D11DepthStencilView* pInputDSV) + { + if (!pInputDSV) + { + return GFSDK_SSAO_NULL_ARGUMENT; + } + + D3D11_TEXTURE2D_DESC TextureDesc; + GFSDK::SSAO::D3D11::TextureUtil::GetDesc(pInputDSV, &TextureDesc); + + pDSV = pInputDSV; + Width = TextureDesc.Width; + Height = TextureDesc.Height; + SampleCount = TextureDesc.SampleDesc.Count; + + return GFSDK_SSAO_OK; + } + + bool IsSet() + { + return (pDSV != NULL); + } + + ID3D11DepthStencilView* pDSV; +}; + +} // namespace D3D11 +#endif // SUPPORT_D3D11 + +//-------------------------------------------------------------------------------- +#if SUPPORT_D3D12 +namespace D3D12 +{ + +struct UserTextureSRV : public SSAO::UserTextureDesc +{ + UserTextureSRV() + { + SRV.pResource = NULL; + SRV.GpuHandle.ptr = ~0ull; + } + + GFSDK_SSAO_Status Init(const GFSDK_SSAO_ShaderResourceView_D3D12* pInputSRV) + { + if (!pInputSRV) + { + return GFSDK_SSAO_NULL_ARGUMENT; + } + + D3D12_RESOURCE_DESC TextureDesc; + GFSDK::SSAO::D3D12::TextureUtil::GetDesc(pInputSRV->pResource, &TextureDesc); + + SRV = *pInputSRV; + Width = (UINT)TextureDesc.Width; + Height = (UINT)TextureDesc.Height; + SampleCount = TextureDesc.SampleDesc.Count; + + return GFSDK_SSAO_OK; + } + + bool IsSet() + { + return (SRV.pResource != NULL); + } + + ShaderResourceView SRV; +}; + +struct UserTextureRTV : public SSAO::UserTextureDesc +{ + UserTextureRTV() + : Format(DXGI_FORMAT_UNKNOWN) + { + } + + GFSDK_SSAO_Status Init(const GFSDK_SSAO_RenderTargetView_D3D12* pRenderTargetView) + { + if (!pRenderTargetView || !pRenderTargetView->CpuHandle) + { + return GFSDK_SSAO_NULL_ARGUMENT; + } + + D3D12_CPU_DESCRIPTOR_HANDLE Handle = { pRenderTargetView->CpuHandle }; + D3D12_RESOURCE_DESC ResourceDesc; + SSAO::D3D12::TextureUtil::GetDesc(pRenderTargetView->pResource, &ResourceDesc); + + RTV = *pRenderTargetView; + Width = (UINT)ResourceDesc.Width; + Height = (UINT)ResourceDesc.Height; + SampleCount = ResourceDesc.SampleDesc.Count; + Format = ResourceDesc.Format; + + return GFSDK_SSAO_OK; + } + + RenderTargetView RTV; + DXGI_FORMAT Format; +}; + +} // namespace D3D12 +#endif // SUPPORT_D3D12 + +//-------------------------------------------------------------------------------- +#if SUPPORT_GL +namespace GL +{ + +struct UserTexture : public SSAO::UserTextureDesc +{ + GFSDK_SSAO_Status Init(const GFSDK_SSAO_GLFunctions& GL, const GFSDK_SSAO_Texture_GL &InputGLTexture) + { + if (!GFSDK::SSAO::GL::TextureUtil::HasValidTextureTarget(InputGLTexture)) + { + return GFSDK_SSAO_GL_INVALID_TEXTURE_TARGET; + } + + if (!InputGLTexture.TextureId) + { + // The name space for texture objects is the unsigned integers, with zero reserved by the GL. + return GFSDK_SSAO_GL_INVALID_TEXTURE_OBJECT; + } + + GFSDK::SSAO::GL::TextureDesc2D TextureDesc; + GFSDK::SSAO::GL::TextureUtil::GetDesc2D(GL, InputGLTexture, &TextureDesc); + + GLTexture = InputGLTexture; + Width = TextureDesc.Width; + Height = TextureDesc.Height; + SampleCount = TextureDesc.SampleCount; + + return GFSDK_SSAO_OK; + } + + bool IsSet() + { + return (GLTexture.TextureId != 0); + } + + GFSDK_SSAO_Texture_GL GLTexture; +}; + +} // namespace GL +#endif + +} // namespace SSAO +} // namespace GFSDK diff --git a/src/VAO_GL.h b/src/VAO_GL.h new file mode 100644 index 0000000..acdd2df --- /dev/null +++ b/src/VAO_GL.h @@ -0,0 +1,55 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#if SUPPORT_GL + +#pragma once +#include "Common.h" + +namespace GFSDK +{ +namespace SSAO +{ +namespace GL +{ + +class VAO +{ +public: + VAO() : m_VertexArrayObjectId(0) + { + } + + void Create(const GFSDK_SSAO_GLFunctions& GL) + { + GL.glGenVertexArrays(1, &m_VertexArrayObjectId); + ASSERT_GL_ERROR(GL); + } + + void Release(const GFSDK_SSAO_GLFunctions& GL) + { + GL.glDeleteVertexArrays(1, &m_VertexArrayObjectId); + m_VertexArrayObjectId = 0; + } + + void Bind(const GFSDK_SSAO_GLFunctions& GL) + { + GL.glBindVertexArray(m_VertexArrayObjectId); + } + +private: + GLuint m_VertexArrayObjectId; +}; + +} // namespace GL +} // namespace SSAO +} // namespace GFSDK + +#endif // SUPPORT_GL diff --git a/src/Viewports.h b/src/Viewports.h new file mode 100644 index 0000000..c2abc39 --- /dev/null +++ b/src/Viewports.h @@ -0,0 +1,42 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#pragma once +#include "Common.h" +#include "InputViewport.h" + +namespace GFSDK +{ +namespace SSAO +{ + +//-------------------------------------------------------------------------------- +struct Viewports +{ + void SetFullResolution(UINT FullWidth, UINT FullHeight) + { + FullRes.TopLeftX = 0.f; + FullRes.TopLeftY = 0.f; + FullRes.Width = FLOAT(FullWidth); + FullRes.Height = FLOAT(FullHeight); + FullRes.MinDepth = 0.f; + FullRes.MaxDepth = 1.f; + + QuarterRes = FullRes; + QuarterRes.Width = FLOAT(iDivUp(FullWidth,4)); + QuarterRes.Height = FLOAT(iDivUp(FullHeight,4)); + } + + SSAO::InputViewport FullRes; + SSAO::InputViewport QuarterRes; +}; + +} // namespace SSAO +} // namespace GFSDK diff --git a/src/d3dx12.h b/src/d3dx12.h new file mode 100644 index 0000000..ba59dfc --- /dev/null +++ b/src/d3dx12.h @@ -0,0 +1,1508 @@ +////////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) Microsoft Corporation. All Rights Reserved. +// +// File: d3dx12.h +// Content: D3DX12 utility library +// +////////////////////////////////////////////////////////////////////////////// + +#ifndef __D3DX12_H__ +#define __D3DX12_H__ + +#include "d3d12.h" + +#if defined( __cplusplus ) + +struct CD3DX12_DEFAULT {}; +extern const DECLSPEC_SELECTANY CD3DX12_DEFAULT D3D12_DEFAULT; + +//------------------------------------------------------------------------------------------------ +inline bool operator==( const D3D12_VIEWPORT& l, const D3D12_VIEWPORT& r ) +{ + return l.TopLeftX == r.TopLeftX && l.TopLeftY == r.TopLeftY && l.Width == r.Width && + l.Height == r.Height && l.MinDepth == r.MinDepth && l.MaxDepth == r.MaxDepth; +} + +//------------------------------------------------------------------------------------------------ +inline bool operator!=( const D3D12_VIEWPORT& l, const D3D12_VIEWPORT& r ) +{ return !( l == r ); } + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_RECT : public D3D12_RECT +{ + CD3DX12_RECT() + {} + explicit CD3DX12_RECT( const D3D12_RECT& o ) : + D3D12_RECT( o ) + {} + explicit CD3DX12_RECT( + LONG Left, + LONG Top, + LONG Right, + LONG Bottom ) + { + left = Left; + top = Top; + right = Right; + bottom = Bottom; + } + ~CD3DX12_RECT() {} + operator const D3D12_RECT&() const { return *this; } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_BOX : public D3D12_BOX +{ + CD3DX12_BOX() + {} + explicit CD3DX12_BOX( const D3D12_BOX& o ) : + D3D12_BOX( o ) + {} + explicit CD3DX12_BOX( + LONG Left, + LONG Right ) + { + left = Left; + top = 0; + front = 0; + right = Right; + bottom = 1; + back = 1; + } + explicit CD3DX12_BOX( + LONG Left, + LONG Top, + LONG Right, + LONG Bottom ) + { + left = Left; + top = Top; + front = 0; + right = Right; + bottom = Bottom; + back = 1; + } + explicit CD3DX12_BOX( + LONG Left, + LONG Top, + LONG Front, + LONG Right, + LONG Bottom, + LONG Back ) + { + left = Left; + top = Top; + front = Front; + right = Right; + bottom = Bottom; + back = Back; + } + ~CD3DX12_BOX() {} + operator const D3D12_BOX&() const { return *this; } +}; +inline bool operator==( const D3D12_BOX& l, const D3D12_BOX& r ) +{ + return l.left == r.left && l.top == r.top && l.front == r.front && + l.right == r.right && l.bottom == r.bottom && l.back == r.back; +} +inline bool operator!=( const D3D12_BOX& l, const D3D12_BOX& r ) +{ return !( l == r ); } + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_DEPTH_STENCIL_DESC : public D3D12_DEPTH_STENCIL_DESC +{ + CD3DX12_DEPTH_STENCIL_DESC() + {} + explicit CD3DX12_DEPTH_STENCIL_DESC( const D3D12_DEPTH_STENCIL_DESC& o ) : + D3D12_DEPTH_STENCIL_DESC( o ) + {} + explicit CD3DX12_DEPTH_STENCIL_DESC( CD3DX12_DEFAULT ) + { + DepthEnable = TRUE; + DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL; + DepthFunc = D3D12_COMPARISON_FUNC_LESS; + StencilEnable = FALSE; + StencilReadMask = D3D12_DEFAULT_STENCIL_READ_MASK; + StencilWriteMask = D3D12_DEFAULT_STENCIL_WRITE_MASK; + const D3D12_DEPTH_STENCILOP_DESC defaultStencilOp = + { D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_COMPARISON_FUNC_ALWAYS }; + FrontFace = defaultStencilOp; + BackFace = defaultStencilOp; + } + explicit CD3DX12_DEPTH_STENCIL_DESC( + BOOL depthEnable, + D3D12_DEPTH_WRITE_MASK depthWriteMask, + D3D12_COMPARISON_FUNC depthFunc, + BOOL stencilEnable, + UINT8 stencilReadMask, + UINT8 stencilWriteMask, + D3D12_STENCIL_OP frontStencilFailOp, + D3D12_STENCIL_OP frontStencilDepthFailOp, + D3D12_STENCIL_OP frontStencilPassOp, + D3D12_COMPARISON_FUNC frontStencilFunc, + D3D12_STENCIL_OP backStencilFailOp, + D3D12_STENCIL_OP backStencilDepthFailOp, + D3D12_STENCIL_OP backStencilPassOp, + D3D12_COMPARISON_FUNC backStencilFunc ) + { + DepthEnable = depthEnable; + DepthWriteMask = depthWriteMask; + DepthFunc = depthFunc; + StencilEnable = stencilEnable; + StencilReadMask = stencilReadMask; + StencilWriteMask = stencilWriteMask; + FrontFace.StencilFailOp = frontStencilFailOp; + FrontFace.StencilDepthFailOp = frontStencilDepthFailOp; + FrontFace.StencilPassOp = frontStencilPassOp; + FrontFace.StencilFunc = frontStencilFunc; + BackFace.StencilFailOp = backStencilFailOp; + BackFace.StencilDepthFailOp = backStencilDepthFailOp; + BackFace.StencilPassOp = backStencilPassOp; + BackFace.StencilFunc = backStencilFunc; + } + ~CD3DX12_DEPTH_STENCIL_DESC() {} + operator const D3D12_DEPTH_STENCIL_DESC&() const { return *this; } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_BLEND_DESC : public D3D12_BLEND_DESC +{ + CD3DX12_BLEND_DESC() + {} + explicit CD3DX12_BLEND_DESC( const D3D12_BLEND_DESC& o ) : + D3D12_BLEND_DESC( o ) + {} + explicit CD3DX12_BLEND_DESC( CD3DX12_DEFAULT ) + { + AlphaToCoverageEnable = FALSE; + IndependentBlendEnable = FALSE; + const D3D12_RENDER_TARGET_BLEND_DESC defaultRenderTargetBlendDesc = + { + FALSE,FALSE, + D3D12_BLEND_ONE, D3D12_BLEND_ZERO, D3D12_BLEND_OP_ADD, + D3D12_BLEND_ONE, D3D12_BLEND_ZERO, D3D12_BLEND_OP_ADD, + D3D12_LOGIC_OP_NOOP, + D3D12_COLOR_WRITE_ENABLE_ALL, + }; + for (UINT i = 0; i < D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT; ++i) + RenderTarget[ i ] = defaultRenderTargetBlendDesc; + } + ~CD3DX12_BLEND_DESC() {} + operator const D3D12_BLEND_DESC&() const { return *this; } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_RASTERIZER_DESC : public D3D12_RASTERIZER_DESC +{ + CD3DX12_RASTERIZER_DESC() + {} + explicit CD3DX12_RASTERIZER_DESC( const D3D12_RASTERIZER_DESC& o ) : + D3D12_RASTERIZER_DESC( o ) + {} + explicit CD3DX12_RASTERIZER_DESC( CD3DX12_DEFAULT ) + { + FillMode = D3D12_FILL_MODE_SOLID; + CullMode = D3D12_CULL_MODE_BACK; + FrontCounterClockwise = FALSE; + DepthBias = D3D12_DEFAULT_DEPTH_BIAS; + DepthBiasClamp = D3D12_DEFAULT_DEPTH_BIAS_CLAMP; + SlopeScaledDepthBias = D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS; + DepthClipEnable = TRUE; + MultisampleEnable = FALSE; + AntialiasedLineEnable = FALSE; + ForcedSampleCount = 0; + ConservativeRaster = D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF; + } + explicit CD3DX12_RASTERIZER_DESC( + D3D12_FILL_MODE fillMode, + D3D12_CULL_MODE cullMode, + BOOL frontCounterClockwise, + INT depthBias, + FLOAT depthBiasClamp, + FLOAT slopeScaledDepthBias, + BOOL depthClipEnable, + BOOL multisampleEnable, + BOOL antialiasedLineEnable, + UINT forcedSampleCount, + D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster) + { + FillMode = fillMode; + CullMode = cullMode; + FrontCounterClockwise = frontCounterClockwise; + DepthBias = depthBias; + DepthBiasClamp = depthBiasClamp; + SlopeScaledDepthBias = slopeScaledDepthBias; + DepthClipEnable = depthClipEnable; + MultisampleEnable = multisampleEnable; + AntialiasedLineEnable = antialiasedLineEnable; + ForcedSampleCount = forcedSampleCount; + ConservativeRaster = conservativeRaster; + } + ~CD3DX12_RASTERIZER_DESC() {} + operator const D3D12_RASTERIZER_DESC&() const { return *this; } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_RESOURCE_ALLOCATION_INFO : public D3D12_RESOURCE_ALLOCATION_INFO +{ + CD3DX12_RESOURCE_ALLOCATION_INFO() + {} + explicit CD3DX12_RESOURCE_ALLOCATION_INFO( const D3D12_RESOURCE_ALLOCATION_INFO& o ) : + D3D12_RESOURCE_ALLOCATION_INFO( o ) + {} + CD3DX12_RESOURCE_ALLOCATION_INFO( + UINT64 size, + UINT64 alignment ) + { + SizeInBytes = size; + Alignment = alignment; + } + operator const D3D12_RESOURCE_ALLOCATION_INFO&() const { return *this; } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_HEAP_PROPERTIES : public D3D12_HEAP_PROPERTIES +{ + CD3DX12_HEAP_PROPERTIES() + {} + explicit CD3DX12_HEAP_PROPERTIES(const D3D12_HEAP_PROPERTIES &o) : + D3D12_HEAP_PROPERTIES(o) + {} + CD3DX12_HEAP_PROPERTIES( + D3D12_CPU_PAGE_PROPERTY cpuPageProperty, + D3D12_MEMORY_POOL memoryPoolPreference, + UINT creationNodeMask = 1, + UINT nodeMask = 1 ) + { + Type = D3D12_HEAP_TYPE_CUSTOM; + CPUPageProperty = cpuPageProperty; + MemoryPoolPreference = memoryPoolPreference; + CreationNodeMask = creationNodeMask; + VisibleNodeMask = nodeMask; + } + explicit CD3DX12_HEAP_PROPERTIES( + D3D12_HEAP_TYPE type, + UINT creationNodeMask = 1, + UINT nodeMask = 1 ) + { + Type = type; + CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN; + MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN; + CreationNodeMask = creationNodeMask; + VisibleNodeMask = nodeMask; + } + operator const D3D12_HEAP_PROPERTIES&() const { return *this; } + bool IsCPUAccessible() const + { + return Type == D3D12_HEAP_TYPE_UPLOAD || Type == D3D12_HEAP_TYPE_READBACK || (Type == D3D12_HEAP_TYPE_CUSTOM && + (CPUPageProperty == D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE || CPUPageProperty == D3D12_CPU_PAGE_PROPERTY_WRITE_BACK)); + } +}; +inline bool operator==( const D3D12_HEAP_PROPERTIES& l, const D3D12_HEAP_PROPERTIES& r ) +{ + return l.Type == r.Type && l.CPUPageProperty == r.CPUPageProperty && + l.MemoryPoolPreference == r.MemoryPoolPreference && + l.CreationNodeMask == r.CreationNodeMask && + l.VisibleNodeMask == r.VisibleNodeMask; +} +inline bool operator!=( const D3D12_HEAP_PROPERTIES& l, const D3D12_HEAP_PROPERTIES& r ) +{ return !( l == r ); } + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_HEAP_DESC : public D3D12_HEAP_DESC +{ + CD3DX12_HEAP_DESC() + {} + explicit CD3DX12_HEAP_DESC(const D3D12_HEAP_DESC &o) : + D3D12_HEAP_DESC(o) + {} + CD3DX12_HEAP_DESC( + UINT64 size, + D3D12_HEAP_PROPERTIES properties, + UINT64 alignment = 0, + D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) + { + SizeInBytes = size; + Properties = properties; + Alignment = alignment; + Flags = flags; + } + CD3DX12_HEAP_DESC( + UINT64 size, + D3D12_HEAP_TYPE type, + UINT64 alignment = 0, + D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) + { + SizeInBytes = size; + Properties = CD3DX12_HEAP_PROPERTIES( type ); + Alignment = alignment; + Flags = flags; + } + CD3DX12_HEAP_DESC( + UINT64 size, + D3D12_CPU_PAGE_PROPERTY cpuPageProperty, + D3D12_MEMORY_POOL memoryPoolPreference, + UINT64 alignment = 0, + D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) + { + SizeInBytes = size; + Properties = CD3DX12_HEAP_PROPERTIES( cpuPageProperty, memoryPoolPreference ); + Alignment = alignment; + Flags = flags; + } + CD3DX12_HEAP_DESC( + const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo, + D3D12_HEAP_PROPERTIES properties, + D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) + { + SizeInBytes = resAllocInfo.SizeInBytes; + Properties = properties; + Alignment = resAllocInfo.Alignment; + Flags = flags; + } + CD3DX12_HEAP_DESC( + const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo, + D3D12_HEAP_TYPE type, + D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) + { + SizeInBytes = resAllocInfo.SizeInBytes; + Properties = CD3DX12_HEAP_PROPERTIES( type ); + Alignment = resAllocInfo.Alignment; + Flags = flags; + } + CD3DX12_HEAP_DESC( + const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo, + D3D12_CPU_PAGE_PROPERTY cpuPageProperty, + D3D12_MEMORY_POOL memoryPoolPreference, + D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) + { + SizeInBytes = resAllocInfo.SizeInBytes; + Properties = CD3DX12_HEAP_PROPERTIES( cpuPageProperty, memoryPoolPreference ); + Alignment = resAllocInfo.Alignment; + Flags = flags; + } + operator const D3D12_HEAP_DESC&() const { return *this; } + bool IsCPUAccessible() const + { return static_cast< const CD3DX12_HEAP_PROPERTIES* >( &Properties )->IsCPUAccessible(); } +}; +inline bool operator==( const D3D12_HEAP_DESC& l, const D3D12_HEAP_DESC& r ) +{ + return l.SizeInBytes == r.SizeInBytes && + l.Properties == r.Properties && + l.Alignment == r.Alignment && + l.Flags == r.Flags; +} +inline bool operator!=( const D3D12_HEAP_DESC& l, const D3D12_HEAP_DESC& r ) +{ return !( l == r ); } + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_CLEAR_VALUE : public D3D12_CLEAR_VALUE +{ + CD3DX12_CLEAR_VALUE() + {} + explicit CD3DX12_CLEAR_VALUE(const D3D12_CLEAR_VALUE &o) : + D3D12_CLEAR_VALUE(o) + {} + CD3DX12_CLEAR_VALUE( + DXGI_FORMAT format, + const FLOAT color[4] ) + { + Format = format; + memcpy( Color, color, sizeof( Color ) ); + } + CD3DX12_CLEAR_VALUE( + DXGI_FORMAT format, + FLOAT depth, + UINT8 stencil ) + { + Format = format; + /* Use memcpy to preserve NAN values */ + memcpy( &DepthStencil.Depth, &depth, sizeof( depth ) ); + DepthStencil.Stencil = stencil; + } + operator const D3D12_CLEAR_VALUE&() const { return *this; } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_RANGE : public D3D12_RANGE +{ + CD3DX12_RANGE() + {} + explicit CD3DX12_RANGE(const D3D12_RANGE &o) : + D3D12_RANGE(o) + {} + CD3DX12_RANGE( + SIZE_T begin, + SIZE_T end ) + { + Begin = begin; + End = end; + } + operator const D3D12_RANGE&() const { return *this; } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_TILED_RESOURCE_COORDINATE : public D3D12_TILED_RESOURCE_COORDINATE +{ + CD3DX12_TILED_RESOURCE_COORDINATE() + {} + explicit CD3DX12_TILED_RESOURCE_COORDINATE(const D3D12_TILED_RESOURCE_COORDINATE &o) : + D3D12_TILED_RESOURCE_COORDINATE(o) + {} + CD3DX12_TILED_RESOURCE_COORDINATE( + UINT x, + UINT y, + UINT z, + UINT subresource ) + { + X = x; + Y = y; + Z = z; + Subresource = subresource; + } + operator const D3D12_TILED_RESOURCE_COORDINATE&() const { return *this; } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_TILE_REGION_SIZE : public D3D12_TILE_REGION_SIZE +{ + CD3DX12_TILE_REGION_SIZE() + {} + explicit CD3DX12_TILE_REGION_SIZE(const D3D12_TILE_REGION_SIZE &o) : + D3D12_TILE_REGION_SIZE(o) + {} + CD3DX12_TILE_REGION_SIZE( + UINT numTiles, + BOOL useBox, + UINT width, + UINT16 height, + UINT16 depth ) + { + NumTiles = numTiles; + UseBox = useBox; + Width = width; + Height = height; + Depth = depth; + } + operator const D3D12_TILE_REGION_SIZE&() const { return *this; } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_SUBRESOURCE_TILING : public D3D12_SUBRESOURCE_TILING +{ + CD3DX12_SUBRESOURCE_TILING() + {} + explicit CD3DX12_SUBRESOURCE_TILING(const D3D12_SUBRESOURCE_TILING &o) : + D3D12_SUBRESOURCE_TILING(o) + {} + CD3DX12_SUBRESOURCE_TILING( + UINT widthInTiles, + UINT16 heightInTiles, + UINT16 depthInTiles, + UINT startTileIndexInOverallResource ) + { + WidthInTiles = widthInTiles; + HeightInTiles = heightInTiles; + DepthInTiles = depthInTiles; + StartTileIndexInOverallResource = startTileIndexInOverallResource; + } + operator const D3D12_SUBRESOURCE_TILING&() const { return *this; } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_TILE_SHAPE : public D3D12_TILE_SHAPE +{ + CD3DX12_TILE_SHAPE() + {} + explicit CD3DX12_TILE_SHAPE(const D3D12_TILE_SHAPE &o) : + D3D12_TILE_SHAPE(o) + {} + CD3DX12_TILE_SHAPE( + UINT widthInTexels, + UINT heightInTexels, + UINT depthInTexels ) + { + WidthInTexels = widthInTexels; + HeightInTexels = heightInTexels; + DepthInTexels = depthInTexels; + } + operator const D3D12_TILE_SHAPE&() const { return *this; } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_RESOURCE_BARRIER : public D3D12_RESOURCE_BARRIER +{ + CD3DX12_RESOURCE_BARRIER() + {} + explicit CD3DX12_RESOURCE_BARRIER(const D3D12_RESOURCE_BARRIER &o) : + D3D12_RESOURCE_BARRIER(o) + {} + static inline CD3DX12_RESOURCE_BARRIER Transition( + _In_ ID3D12Resource* pResource, + D3D12_RESOURCE_STATES stateBefore, + D3D12_RESOURCE_STATES stateAfter, + UINT subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES, + D3D12_RESOURCE_BARRIER_FLAGS flags = D3D12_RESOURCE_BARRIER_FLAG_NONE) + { + CD3DX12_RESOURCE_BARRIER result; + ZeroMemory(&result, sizeof(result)); + D3D12_RESOURCE_BARRIER &barrier = result; + result.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION; + result.Flags = flags; + barrier.Transition.pResource = pResource; + barrier.Transition.StateBefore = stateBefore; + barrier.Transition.StateAfter = stateAfter; + barrier.Transition.Subresource = subresource; + return result; + } + static inline CD3DX12_RESOURCE_BARRIER Aliasing( + _In_ ID3D12Resource* pResourceBefore, + _In_ ID3D12Resource* pResourceAfter) + { + CD3DX12_RESOURCE_BARRIER result; + ZeroMemory(&result, sizeof(result)); + D3D12_RESOURCE_BARRIER &barrier = result; + result.Type = D3D12_RESOURCE_BARRIER_TYPE_ALIASING; + barrier.Aliasing.pResourceBefore = pResourceBefore; + barrier.Aliasing.pResourceAfter = pResourceAfter; + return result; + } + static inline CD3DX12_RESOURCE_BARRIER UAV( + _In_ ID3D12Resource* pResource) + { + CD3DX12_RESOURCE_BARRIER result; + ZeroMemory(&result, sizeof(result)); + D3D12_RESOURCE_BARRIER &barrier = result; + result.Type = D3D12_RESOURCE_BARRIER_TYPE_UAV; + barrier.UAV.pResource = pResource; + return result; + } + operator const D3D12_RESOURCE_BARRIER&() const { return *this; } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_PACKED_MIP_INFO : public D3D12_PACKED_MIP_INFO +{ + CD3DX12_PACKED_MIP_INFO() + {} + explicit CD3DX12_PACKED_MIP_INFO(const D3D12_PACKED_MIP_INFO &o) : + D3D12_PACKED_MIP_INFO(o) + {} + CD3DX12_PACKED_MIP_INFO( + UINT8 numStandardMips, + UINT8 numPackedMips, + UINT numTilesForPackedMips, + UINT startTileIndexInOverallResource ) + { + NumStandardMips = numStandardMips; + NumPackedMips = numPackedMips; + NumTilesForPackedMips = numTilesForPackedMips; + StartTileIndexInOverallResource = startTileIndexInOverallResource; + } + operator const D3D12_PACKED_MIP_INFO&() const { return *this; } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_SUBRESOURCE_FOOTPRINT : public D3D12_SUBRESOURCE_FOOTPRINT +{ + CD3DX12_SUBRESOURCE_FOOTPRINT() + {} + explicit CD3DX12_SUBRESOURCE_FOOTPRINT(const D3D12_SUBRESOURCE_FOOTPRINT &o) : + D3D12_SUBRESOURCE_FOOTPRINT(o) + {} + CD3DX12_SUBRESOURCE_FOOTPRINT( + DXGI_FORMAT format, + UINT width, + UINT height, + UINT depth, + UINT rowPitch ) + { + Format = format; + Width = width; + Height = height; + Depth = depth; + RowPitch = rowPitch; + } + explicit CD3DX12_SUBRESOURCE_FOOTPRINT( + const D3D12_RESOURCE_DESC& resDesc, + UINT rowPitch ) + { + Format = resDesc.Format; + Width = UINT( resDesc.Width ); + Height = resDesc.Height; + Depth = (resDesc.Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? resDesc.DepthOrArraySize : 1); + RowPitch = rowPitch; + } + operator const D3D12_SUBRESOURCE_FOOTPRINT&() const { return *this; } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_TEXTURE_COPY_LOCATION : public D3D12_TEXTURE_COPY_LOCATION +{ + CD3DX12_TEXTURE_COPY_LOCATION() + {} + explicit CD3DX12_TEXTURE_COPY_LOCATION(const D3D12_TEXTURE_COPY_LOCATION &o) : + D3D12_TEXTURE_COPY_LOCATION(o) + {} + CD3DX12_TEXTURE_COPY_LOCATION(ID3D12Resource* pRes) { pResource = pRes; } + CD3DX12_TEXTURE_COPY_LOCATION(ID3D12Resource* pRes, D3D12_PLACED_SUBRESOURCE_FOOTPRINT const& Footprint) + { + pResource = pRes; + Type = D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT; + PlacedFootprint = Footprint; + } + CD3DX12_TEXTURE_COPY_LOCATION(ID3D12Resource* pRes, UINT Sub) + { + pResource = pRes; + Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX; + SubresourceIndex = Sub; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_DESCRIPTOR_RANGE : public D3D12_DESCRIPTOR_RANGE +{ + CD3DX12_DESCRIPTOR_RANGE() { } + explicit CD3DX12_DESCRIPTOR_RANGE(const D3D12_DESCRIPTOR_RANGE &o) : + D3D12_DESCRIPTOR_RANGE(o) + {} + CD3DX12_DESCRIPTOR_RANGE( + D3D12_DESCRIPTOR_RANGE_TYPE rangeType, + UINT numDescriptors, + UINT baseShaderRegister, + UINT registerSpace = 0, + UINT offsetInDescriptorsFromTableStart = + D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) + { + Init(rangeType, numDescriptors, baseShaderRegister, registerSpace, offsetInDescriptorsFromTableStart); + } + + inline void Init( + D3D12_DESCRIPTOR_RANGE_TYPE rangeType, + UINT numDescriptors, + UINT baseShaderRegister, + UINT registerSpace = 0, + UINT offsetInDescriptorsFromTableStart = + D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) + { + Init(*this, rangeType, numDescriptors, baseShaderRegister, registerSpace, offsetInDescriptorsFromTableStart); + } + + static inline void Init( + _Out_ D3D12_DESCRIPTOR_RANGE &range, + D3D12_DESCRIPTOR_RANGE_TYPE rangeType, + UINT numDescriptors, + UINT baseShaderRegister, + UINT registerSpace = 0, + UINT offsetInDescriptorsFromTableStart = + D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) + { + range.RangeType = rangeType; + range.NumDescriptors = numDescriptors; + range.BaseShaderRegister = baseShaderRegister; + range.RegisterSpace = registerSpace; + range.OffsetInDescriptorsFromTableStart = offsetInDescriptorsFromTableStart; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_ROOT_DESCRIPTOR_TABLE : public D3D12_ROOT_DESCRIPTOR_TABLE +{ + CD3DX12_ROOT_DESCRIPTOR_TABLE() {} + explicit CD3DX12_ROOT_DESCRIPTOR_TABLE(const D3D12_ROOT_DESCRIPTOR_TABLE &o) : + D3D12_ROOT_DESCRIPTOR_TABLE(o) + {} + CD3DX12_ROOT_DESCRIPTOR_TABLE( + UINT numDescriptorRanges, + _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) + { + Init(numDescriptorRanges, _pDescriptorRanges); + } + + inline void Init( + UINT numDescriptorRanges, + _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) + { + Init(*this, numDescriptorRanges, _pDescriptorRanges); + } + + static inline void Init( + _Out_ D3D12_ROOT_DESCRIPTOR_TABLE &rootDescriptorTable, + UINT numDescriptorRanges, + _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) + { + rootDescriptorTable.NumDescriptorRanges = numDescriptorRanges; + rootDescriptorTable.pDescriptorRanges = _pDescriptorRanges; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_ROOT_CONSTANTS : public D3D12_ROOT_CONSTANTS +{ + CD3DX12_ROOT_CONSTANTS() {} + explicit CD3DX12_ROOT_CONSTANTS(const D3D12_ROOT_CONSTANTS &o) : + D3D12_ROOT_CONSTANTS(o) + {} + CD3DX12_ROOT_CONSTANTS( + UINT num32BitValues, + UINT shaderRegister, + UINT registerSpace = 0) + { + Init(num32BitValues, shaderRegister, registerSpace); + } + + inline void Init( + UINT num32BitValues, + UINT shaderRegister, + UINT registerSpace = 0) + { + Init(*this, num32BitValues, shaderRegister, registerSpace); + } + + static inline void Init( + _Out_ D3D12_ROOT_CONSTANTS &rootConstants, + UINT num32BitValues, + UINT shaderRegister, + UINT registerSpace = 0) + { + rootConstants.Num32BitValues = num32BitValues; + rootConstants.ShaderRegister = shaderRegister; + rootConstants.RegisterSpace = registerSpace; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_ROOT_DESCRIPTOR : public D3D12_ROOT_DESCRIPTOR +{ + CD3DX12_ROOT_DESCRIPTOR() {} + explicit CD3DX12_ROOT_DESCRIPTOR(const D3D12_ROOT_DESCRIPTOR &o) : + D3D12_ROOT_DESCRIPTOR(o) + {} + CD3DX12_ROOT_DESCRIPTOR( + UINT shaderRegister, + UINT registerSpace = 0) + { + Init(shaderRegister, registerSpace); + } + + inline void Init( + UINT shaderRegister, + UINT registerSpace = 0) + { + Init(*this, shaderRegister, registerSpace); + } + + static inline void Init(_Out_ D3D12_ROOT_DESCRIPTOR &table, UINT shaderRegister, UINT registerSpace = 0) + { + table.ShaderRegister = shaderRegister; + table.RegisterSpace = registerSpace; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_ROOT_PARAMETER : public D3D12_ROOT_PARAMETER +{ + CD3DX12_ROOT_PARAMETER() {} + explicit CD3DX12_ROOT_PARAMETER(const D3D12_ROOT_PARAMETER &o) : + D3D12_ROOT_PARAMETER(o) + {} + + static inline void InitAsDescriptorTable( + _Out_ D3D12_ROOT_PARAMETER &rootParam, + UINT numDescriptorRanges, + _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE; + rootParam.ShaderVisibility = visibility; + CD3DX12_ROOT_DESCRIPTOR_TABLE::Init(rootParam.DescriptorTable, numDescriptorRanges, pDescriptorRanges); + } + + static inline void InitAsConstants( + _Out_ D3D12_ROOT_PARAMETER &rootParam, + UINT num32BitValues, + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS; + rootParam.ShaderVisibility = visibility; + CD3DX12_ROOT_CONSTANTS::Init(rootParam.Constants, num32BitValues, shaderRegister, registerSpace); + } + + static inline void InitAsConstantBufferView( + _Out_ D3D12_ROOT_PARAMETER &rootParam, + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV; + rootParam.ShaderVisibility = visibility; + CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace); + } + + static inline void InitAsShaderResourceView( + _Out_ D3D12_ROOT_PARAMETER &rootParam, + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_SRV; + rootParam.ShaderVisibility = visibility; + CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace); + } + + static inline void InitAsUnorderedAccessView( + _Out_ D3D12_ROOT_PARAMETER &rootParam, + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_UAV; + rootParam.ShaderVisibility = visibility; + CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace); + } + + inline void InitAsDescriptorTable( + UINT numDescriptorRanges, + _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + InitAsDescriptorTable(*this, numDescriptorRanges, pDescriptorRanges, visibility); + } + + inline void InitAsConstants( + UINT num32BitValues, + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + InitAsConstants(*this, num32BitValues, shaderRegister, registerSpace, visibility); + } + + inline void InitAsConstantBufferView( + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + InitAsConstantBufferView(*this, shaderRegister, registerSpace, visibility); + } + + inline void InitAsShaderResourceView( + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + InitAsShaderResourceView(*this, shaderRegister, registerSpace, visibility); + } + + inline void InitAsUnorderedAccessView( + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + InitAsUnorderedAccessView(*this, shaderRegister, registerSpace, visibility); + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_STATIC_SAMPLER_DESC : public D3D12_STATIC_SAMPLER_DESC +{ + CD3DX12_STATIC_SAMPLER_DESC() {} + explicit CD3DX12_STATIC_SAMPLER_DESC(const D3D12_STATIC_SAMPLER_DESC &o) : + D3D12_STATIC_SAMPLER_DESC(o) + {} + CD3DX12_STATIC_SAMPLER_DESC( + UINT shaderRegister, + D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC, + D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP, + D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP, + D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP, + FLOAT mipLODBias = 0, + UINT maxAnisotropy = 16, + D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL, + D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE, + FLOAT minLOD = 0.f, + FLOAT maxLOD = D3D12_FLOAT32_MAX, + D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL, + UINT registerSpace = 0) + { + Init( + shaderRegister, + filter, + addressU, + addressV, + addressW, + mipLODBias, + maxAnisotropy, + comparisonFunc, + borderColor, + minLOD, + maxLOD, + shaderVisibility, + registerSpace); + } + + static inline void Init( + _Out_ D3D12_STATIC_SAMPLER_DESC &samplerDesc, + UINT shaderRegister, + D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC, + D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP, + D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP, + D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP, + FLOAT mipLODBias = 0, + UINT maxAnisotropy = 16, + D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL, + D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE, + FLOAT minLOD = 0.f, + FLOAT maxLOD = D3D12_FLOAT32_MAX, + D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL, + UINT registerSpace = 0) + { + samplerDesc.ShaderRegister = shaderRegister; + samplerDesc.Filter = filter; + samplerDesc.AddressU = addressU; + samplerDesc.AddressV = addressV; + samplerDesc.AddressW = addressW; + samplerDesc.MipLODBias = mipLODBias; + samplerDesc.MaxAnisotropy = maxAnisotropy; + samplerDesc.ComparisonFunc = comparisonFunc; + samplerDesc.BorderColor = borderColor; + samplerDesc.MinLOD = minLOD; + samplerDesc.MaxLOD = maxLOD; + samplerDesc.ShaderVisibility = shaderVisibility; + samplerDesc.RegisterSpace = registerSpace; + } + inline void Init( + UINT shaderRegister, + D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC, + D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP, + D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP, + D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP, + FLOAT mipLODBias = 0, + UINT maxAnisotropy = 16, + D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL, + D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE, + FLOAT minLOD = 0.f, + FLOAT maxLOD = D3D12_FLOAT32_MAX, + D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL, + UINT registerSpace = 0) + { + Init( + *this, + shaderRegister, + filter, + addressU, + addressV, + addressW, + mipLODBias, + maxAnisotropy, + comparisonFunc, + borderColor, + minLOD, + maxLOD, + shaderVisibility, + registerSpace); + } + +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_ROOT_SIGNATURE_DESC : public D3D12_ROOT_SIGNATURE_DESC +{ + CD3DX12_ROOT_SIGNATURE_DESC() {} + explicit CD3DX12_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC &o) : + D3D12_ROOT_SIGNATURE_DESC(o) + {} + CD3DX12_ROOT_SIGNATURE_DESC( + UINT numParameters, + _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters, + UINT numStaticSamplers = 0, + _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = NULL, + D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) + { + Init(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags); + } + CD3DX12_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT) + { + Init(0, NULL, 0, NULL, D3D12_ROOT_SIGNATURE_FLAG_NONE); + } + + inline void Init( + UINT numParameters, + _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters, + UINT numStaticSamplers = 0, + _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = NULL, + D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) + { + Init(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags); + } + + static inline void Init( + _Out_ D3D12_ROOT_SIGNATURE_DESC &desc, + UINT numParameters, + _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters, + UINT numStaticSamplers = 0, + _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = NULL, + D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) + { + desc.NumParameters = numParameters; + desc.pParameters = _pParameters; + desc.NumStaticSamplers = numStaticSamplers; + desc.pStaticSamplers = _pStaticSamplers; + desc.Flags = flags; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_CPU_DESCRIPTOR_HANDLE : public D3D12_CPU_DESCRIPTOR_HANDLE +{ + CD3DX12_CPU_DESCRIPTOR_HANDLE() {} + explicit CD3DX12_CPU_DESCRIPTOR_HANDLE(const D3D12_CPU_DESCRIPTOR_HANDLE &o) : + D3D12_CPU_DESCRIPTOR_HANDLE(o) + {} + CD3DX12_CPU_DESCRIPTOR_HANDLE(CD3DX12_DEFAULT) { ptr = 0; } + CD3DX12_CPU_DESCRIPTOR_HANDLE(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &other, INT offsetScaledByIncrementSize) + { + InitOffsetted(other, offsetScaledByIncrementSize); + } + CD3DX12_CPU_DESCRIPTOR_HANDLE(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &other, INT offsetInDescriptors, UINT descriptorIncrementSize) + { + InitOffsetted(other, offsetInDescriptors, descriptorIncrementSize); + } + CD3DX12_CPU_DESCRIPTOR_HANDLE& Offset(INT offsetInDescriptors, UINT descriptorIncrementSize) + { + ptr += offsetInDescriptors * descriptorIncrementSize; + return *this; + } + CD3DX12_CPU_DESCRIPTOR_HANDLE& Offset(INT offsetScaledByIncrementSize) + { + ptr += offsetScaledByIncrementSize; + return *this; + } + bool operator==(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE& other) + { + return (ptr == other.ptr); + } + bool operator!=(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE& other) + { + return (ptr != other.ptr); + } + CD3DX12_CPU_DESCRIPTOR_HANDLE &operator=(const D3D12_CPU_DESCRIPTOR_HANDLE &other) + { + ptr = other.ptr; + return *this; + } + + inline void InitOffsetted(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) + { + InitOffsetted(*this, base, offsetScaledByIncrementSize); + } + + inline void InitOffsetted(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) + { + InitOffsetted(*this, base, offsetInDescriptors, descriptorIncrementSize); + } + + static inline void InitOffsetted(_Out_ D3D12_CPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) + { + handle.ptr = base.ptr + offsetScaledByIncrementSize; + } + + static inline void InitOffsetted(_Out_ D3D12_CPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) + { + handle.ptr = base.ptr + offsetInDescriptors * descriptorIncrementSize; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_GPU_DESCRIPTOR_HANDLE : public D3D12_GPU_DESCRIPTOR_HANDLE +{ + CD3DX12_GPU_DESCRIPTOR_HANDLE() {} + explicit CD3DX12_GPU_DESCRIPTOR_HANDLE(const D3D12_GPU_DESCRIPTOR_HANDLE &o) : + D3D12_GPU_DESCRIPTOR_HANDLE(o) + {} + CD3DX12_GPU_DESCRIPTOR_HANDLE(CD3DX12_DEFAULT) { ptr = 0; } + CD3DX12_GPU_DESCRIPTOR_HANDLE(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &other, INT offsetScaledByIncrementSize) + { + InitOffsetted(other, offsetScaledByIncrementSize); + } + CD3DX12_GPU_DESCRIPTOR_HANDLE(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &other, INT offsetInDescriptors, UINT descriptorIncrementSize) + { + InitOffsetted(other, offsetInDescriptors, descriptorIncrementSize); + } + CD3DX12_GPU_DESCRIPTOR_HANDLE& Offset(INT offsetInDescriptors, UINT descriptorIncrementSize) + { + ptr += offsetInDescriptors * descriptorIncrementSize; + return *this; + } + CD3DX12_GPU_DESCRIPTOR_HANDLE& Offset(INT offsetScaledByIncrementSize) + { + ptr += offsetScaledByIncrementSize; + return *this; + } + inline bool operator==(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE& other) + { + return (ptr == other.ptr); + } + inline bool operator!=(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE& other) + { + return (ptr != other.ptr); + } + CD3DX12_GPU_DESCRIPTOR_HANDLE &operator=(const D3D12_GPU_DESCRIPTOR_HANDLE &other) + { + ptr = other.ptr; + return *this; + } + + inline void InitOffsetted(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) + { + InitOffsetted(*this, base, offsetScaledByIncrementSize); + } + + inline void InitOffsetted(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) + { + InitOffsetted(*this, base, offsetInDescriptors, descriptorIncrementSize); + } + + static inline void InitOffsetted(_Out_ D3D12_GPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) + { + handle.ptr = base.ptr + offsetScaledByIncrementSize; + } + + static inline void InitOffsetted(_Out_ D3D12_GPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) + { + handle.ptr = base.ptr + offsetInDescriptors * descriptorIncrementSize; + } +}; + +//------------------------------------------------------------------------------------------------ +inline UINT D3D12CalcSubresource( UINT MipSlice, UINT ArraySlice, UINT PlaneSlice, UINT MipLevels, UINT ArraySize ) +{ + return MipSlice + ArraySlice * MipLevels + PlaneSlice * MipLevels * ArraySize; +} + +//------------------------------------------------------------------------------------------------ +template +inline void D3D12DecomposeSubresource( UINT Subresource, UINT MipLevels, UINT ArraySize, _Out_ T& MipSlice, _Out_ U& ArraySlice, _Out_ V& PlaneSlice ) +{ + MipSlice = static_cast(Subresource % MipLevels); + ArraySlice = static_cast((Subresource / MipLevels) % ArraySize); + PlaneSlice = static_cast(Subresource / (MipLevels * ArraySize)); +} + +//------------------------------------------------------------------------------------------------ +inline UINT8 D3D12GetFormatPlaneCount( + _In_ ID3D12Device* pDevice, + DXGI_FORMAT Format + ) +{ + D3D12_FEATURE_DATA_FORMAT_INFO formatInfo = {Format}; + if (FAILED(pDevice->CheckFeatureSupport(D3D12_FEATURE_FORMAT_INFO, &formatInfo, sizeof(formatInfo)))) + { + return 0; + } + return formatInfo.PlaneCount; +} + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_RESOURCE_DESC : public D3D12_RESOURCE_DESC +{ + CD3DX12_RESOURCE_DESC() + {} + explicit CD3DX12_RESOURCE_DESC( const D3D12_RESOURCE_DESC& o ) : + D3D12_RESOURCE_DESC( o ) + {} + CD3DX12_RESOURCE_DESC( + D3D12_RESOURCE_DIMENSION dimension, + UINT64 alignment, + UINT64 width, + UINT height, + UINT16 depthOrArraySize, + UINT16 mipLevels, + DXGI_FORMAT format, + UINT sampleCount, + UINT sampleQuality, + D3D12_TEXTURE_LAYOUT layout, + D3D12_RESOURCE_FLAGS flags ) + { + Dimension = dimension; + Alignment = alignment; + Width = width; + Height = height; + DepthOrArraySize = depthOrArraySize; + MipLevels = mipLevels; + Format = format; + SampleDesc.Count = sampleCount; + SampleDesc.Quality = sampleQuality; + Layout = layout; + Flags = flags; + } + static inline CD3DX12_RESOURCE_DESC Buffer( + const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo, + D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE ) + { + return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_BUFFER, resAllocInfo.Alignment, resAllocInfo.SizeInBytes, + 1, 1, 1, DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags ); + } + static inline CD3DX12_RESOURCE_DESC Buffer( + UINT64 width, + D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE, + UINT64 alignment = 0 ) + { + return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_BUFFER, alignment, width, 1, 1, 1, + DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags ); + } + static inline CD3DX12_RESOURCE_DESC Tex1D( + DXGI_FORMAT format, + UINT64 width, + UINT16 arraySize = 1, + UINT16 mipLevels = 0, + D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE, + D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN, + UINT64 alignment = 0 ) + { + return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE1D, alignment, width, 1, arraySize, + mipLevels, format, 1, 0, layout, flags ); + } + static inline CD3DX12_RESOURCE_DESC Tex2D( + DXGI_FORMAT format, + UINT64 width, + UINT height, + UINT16 arraySize = 1, + UINT16 mipLevels = 0, + UINT sampleCount = 1, + UINT sampleQuality = 0, + D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE, + D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN, + UINT64 alignment = 0 ) + { + return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE2D, alignment, width, height, arraySize, + mipLevels, format, sampleCount, sampleQuality, layout, flags ); + } + static inline CD3DX12_RESOURCE_DESC Tex3D( + DXGI_FORMAT format, + UINT64 width, + UINT height, + UINT16 depth, + UINT16 mipLevels = 0, + D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE, + D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN, + UINT64 alignment = 0 ) + { + return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE3D, alignment, width, height, depth, + mipLevels, format, 1, 0, layout, flags ); + } + inline UINT16 Depth() const + { return (Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1); } + inline UINT16 ArraySize() const + { return (Dimension != D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1); } + inline UINT8 PlaneCount(_In_ ID3D12Device* pDevice) const + { return D3D12GetFormatPlaneCount(pDevice, Format); } + inline UINT Subresources(_In_ ID3D12Device* pDevice) const + { return MipLevels * ArraySize() * PlaneCount(pDevice); } + inline UINT CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT PlaneSlice) + { return D3D12CalcSubresource(MipSlice, ArraySlice, PlaneSlice, MipLevels, ArraySize()); } + operator const D3D12_RESOURCE_DESC&() const { return *this; } +}; +inline bool operator==( const D3D12_RESOURCE_DESC& l, const D3D12_RESOURCE_DESC& r ) +{ + return l.Dimension == r.Dimension && + l.Alignment == r.Alignment && + l.Width == r.Width && + l.Height == r.Height && + l.DepthOrArraySize == r.DepthOrArraySize && + l.MipLevels == r.MipLevels && + l.Format == r.Format && + l.SampleDesc.Count == r.SampleDesc.Count && + l.SampleDesc.Quality == r.SampleDesc.Quality && + l.Layout == r.Layout && + l.Flags == r.Flags; +} +inline bool operator!=( const D3D12_RESOURCE_DESC& l, const D3D12_RESOURCE_DESC& r ) +{ return !( l == r ); } + +//------------------------------------------------------------------------------------------------ +// Row-by-row memcpy +inline void MemcpySubresource( + _In_ const D3D12_MEMCPY_DEST* pDest, + _In_ const D3D12_SUBRESOURCE_DATA* pSrc, + SIZE_T RowSizeInBytes, + UINT NumRows, + UINT NumSlices) +{ + for (UINT z = 0; z < NumSlices; ++z) + { + BYTE* pDestSlice = reinterpret_cast(pDest->pData) + pDest->SlicePitch * z; + const BYTE* pSrcSlice = reinterpret_cast(pSrc->pData) + pSrc->SlicePitch * z; + for (UINT y = 0; y < NumRows; ++y) + { + memcpy(pDestSlice + pDest->RowPitch * y, + pSrcSlice + pSrc->RowPitch * y, + RowSizeInBytes); + } + } +} + +//------------------------------------------------------------------------------------------------ +// Returns required size of a buffer to be used for data upload +inline UINT64 GetRequiredIntermediateSize( + _In_ ID3D12Resource* pDestinationResource, + _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource, + _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources) +{ + D3D12_RESOURCE_DESC Desc = pDestinationResource->GetDesc(); + UINT64 RequiredSize = 0; + + ID3D12Device* pDevice; + pDestinationResource->GetDevice(__uuidof(*pDevice), reinterpret_cast(&pDevice)); + pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, 0, nullptr, nullptr, nullptr, &RequiredSize); + pDevice->Release(); + + return RequiredSize; +} + +//------------------------------------------------------------------------------------------------ +// All arrays must be populated (e.g. by calling GetCopyableFootprints) +inline UINT64 UpdateSubresources( + _In_ ID3D12GraphicsCommandList* pCmdList, + _In_ ID3D12Resource* pDestinationResource, + _In_ ID3D12Resource* pIntermediate, + _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource, + _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources, + UINT64 RequiredSize, + _In_reads_(NumSubresources) const D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts, + _In_reads_(NumSubresources) const UINT* pNumRows, + _In_reads_(NumSubresources) const UINT64* pRowSizesInBytes, + _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData) +{ + // Minor validation + D3D12_RESOURCE_DESC IntermediateDesc = pIntermediate->GetDesc(); + D3D12_RESOURCE_DESC DestinationDesc = pDestinationResource->GetDesc(); + if (IntermediateDesc.Dimension != D3D12_RESOURCE_DIMENSION_BUFFER || + IntermediateDesc.Width < RequiredSize + pLayouts[0].Offset || + RequiredSize > (SIZE_T)-1 || + (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER && + (FirstSubresource != 0 || NumSubresources != 1))) + { + return 0; + } + + BYTE* pData; + HRESULT hr = pIntermediate->Map(0, NULL, reinterpret_cast(&pData)); + if (FAILED(hr)) + { + return 0; + } + + for (UINT i = 0; i < NumSubresources; ++i) + { + if (pRowSizesInBytes[i] > (SIZE_T)-1) return 0; + D3D12_MEMCPY_DEST DestData = { pData + pLayouts[i].Offset, pLayouts[i].Footprint.RowPitch, pLayouts[i].Footprint.RowPitch * pNumRows[i] }; + MemcpySubresource(&DestData, &pSrcData[i], (SIZE_T)pRowSizesInBytes[i], pNumRows[i], pLayouts[i].Footprint.Depth); + } + pIntermediate->Unmap(0, NULL); + + if (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER) + { + CD3DX12_BOX SrcBox( UINT( pLayouts[0].Offset ), UINT( pLayouts[0].Offset + pLayouts[0].Footprint.Width ) ); + pCmdList->CopyBufferRegion( + pDestinationResource, 0, pIntermediate, pLayouts[0].Offset, pLayouts[0].Footprint.Width); + } + else + { + for (UINT i = 0; i < NumSubresources; ++i) + { + CD3DX12_TEXTURE_COPY_LOCATION Dst(pDestinationResource, i + FirstSubresource); + CD3DX12_TEXTURE_COPY_LOCATION Src(pIntermediate, pLayouts[i]); + pCmdList->CopyTextureRegion(&Dst, 0, 0, 0, &Src, nullptr); + } + } + return RequiredSize; +} + +//------------------------------------------------------------------------------------------------ +// Heap-allocating UpdateSubresources implementation +inline UINT64 UpdateSubresources( + _In_ ID3D12GraphicsCommandList* pCmdList, + _In_ ID3D12Resource* pDestinationResource, + _In_ ID3D12Resource* pIntermediate, + UINT64 IntermediateOffset, + _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource, + _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources, + _In_reads_(NumSubresources) D3D12_SUBRESOURCE_DATA* pSrcData) +{ + UINT64 RequiredSize = 0; + UINT64 MemToAlloc = static_cast(sizeof(D3D12_PLACED_SUBRESOURCE_FOOTPRINT) + sizeof(UINT) + sizeof(UINT64)) * NumSubresources; + if (MemToAlloc > SIZE_MAX) + { + return 0; + } + void* pMem = HeapAlloc(GetProcessHeap(), 0, static_cast(MemToAlloc)); + if (pMem == NULL) + { + return 0; + } + D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts = reinterpret_cast(pMem); + UINT64* pRowSizesInBytes = reinterpret_cast(pLayouts + NumSubresources); + UINT* pNumRows = reinterpret_cast(pRowSizesInBytes + NumSubresources); + + D3D12_RESOURCE_DESC Desc = pDestinationResource->GetDesc(); + ID3D12Device* pDevice; + pDestinationResource->GetDevice(__uuidof(*pDevice), reinterpret_cast(&pDevice)); + pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, pLayouts, pNumRows, pRowSizesInBytes, &RequiredSize); + pDevice->Release(); + + UINT64 Result = UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, pLayouts, pNumRows, pRowSizesInBytes, pSrcData); + HeapFree(GetProcessHeap(), 0, pMem); + return Result; +} + +//------------------------------------------------------------------------------------------------ +// Stack-allocating UpdateSubresources implementation +template +inline UINT64 UpdateSubresources( + _In_ ID3D12GraphicsCommandList* pCmdList, + _In_ ID3D12Resource* pDestinationResource, + _In_ ID3D12Resource* pIntermediate, + UINT64 IntermediateOffset, + _In_range_(0, MaxSubresources) UINT FirstSubresource, + _In_range_(1, MaxSubresources - FirstSubresource) UINT NumSubresources, + _In_reads_(NumSubresources) D3D12_SUBRESOURCE_DATA* pSrcData) +{ + UINT64 RequiredSize = 0; + D3D12_PLACED_SUBRESOURCE_FOOTPRINT Layouts[MaxSubresources]; + UINT NumRows[MaxSubresources]; + UINT64 RowSizesInBytes[MaxSubresources]; + + D3D12_RESOURCE_DESC Desc = pDestinationResource->GetDesc(); + ID3D12Device* pDevice; + pDestinationResource->GetDevice(__uuidof(*pDevice), reinterpret_cast(&pDevice)); + pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, Layouts, NumRows, RowSizesInBytes, &RequiredSize); + pDevice->Release(); + + return UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, Layouts, NumRows, RowSizesInBytes, pSrcData); +} + +//------------------------------------------------------------------------------------------------ +inline bool D3D12IsLayoutOpaque( D3D12_TEXTURE_LAYOUT Layout ) +{ return Layout == D3D12_TEXTURE_LAYOUT_UNKNOWN || Layout == D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE; } + +//------------------------------------------------------------------------------------------------ +inline ID3D12CommandList * const * CommandListCast(ID3D12GraphicsCommandList * const * pp) +{ + // This cast is useful for passing strongly typed command list pointers into + // ExecuteCommandLists. + // This cast is valid as long as the const-ness is respected. D3D12 APIs do + // respect the const-ness of their arguments. + return reinterpret_cast(pp); +} + + +#endif // defined( __cplusplus ) + +#endif //__D3DX12_H__ + + + diff --git a/src/shaders/compile_glsl.bat b/src/shaders/compile_glsl.bat new file mode 100644 index 0000000..603b2f2 --- /dev/null +++ b/src/shaders/compile_glsl.bat @@ -0,0 +1,13 @@ +@set OUTPUT_GLSL=%SBT_OUTPUT%.glsl +@set OUTPUT_OBJ=%SBT_OUTPUT%.o + +@set FXC_CMD_LINE=/O3 /T %SBT_PROFILE% %SBT_INPUT% /E %SBT_ENTRY_POINT% %SBT_DEFINES% /Fo %OUTPUT_OBJ% + +@set HLSL_CC_CMD_LINE=-flags=1 -in=%OUTPUT_OBJ% -out=%OUTPUT_GLSL% -lang=150 + +@set STRINGIFY_CMD_LINE=%OUTPUT_GLSL% %SBT_VARIABLE_NAME% %SBT_OUTPUT% + +@call %~dp0\helper_hlsl_cc + +@del %OUTPUT_GLSL% +@del %OUTPUT_OBJ% diff --git a/src/shaders/compile_hlsl.bat b/src/shaders/compile_hlsl.bat new file mode 100644 index 0000000..02b8537 --- /dev/null +++ b/src/shaders/compile_hlsl.bat @@ -0,0 +1,3 @@ +@set FXC_CMD_LINE=/Qstrip_reflect /O3 /T %SBT_PROFILE% %SBT_INPUT% /E %SBT_ENTRY_POINT% %SBT_DEFINES% /Vn %SBT_VARIABLE_NAME% /Fh %SBT_OUTPUT% + +@call %~dp0\helper_fxc diff --git a/src/shaders/helper_fxc.bat b/src/shaders/helper_fxc.bat new file mode 100644 index 0000000..b7940f7 --- /dev/null +++ b/src/shaders/helper_fxc.bat @@ -0,0 +1,14 @@ +@if "%FXC_CMD_LINE%"=="" goto error +@set FXC=%~dp0\fxc.exe + +@echo fxc %FXC_CMD_LINE% + +@%FXC% %FXC_CMD_LINE% >nul +@if ERRORLEVEL 1 goto error + +:done +@exit /B 0 + +:error +@echo %0: ERROR +@exit /B 1 diff --git a/src/shaders/helper_hlsl_cc.bat b/src/shaders/helper_hlsl_cc.bat new file mode 100644 index 0000000..1f27379 --- /dev/null +++ b/src/shaders/helper_hlsl_cc.bat @@ -0,0 +1,20 @@ +@SET "HLSL_CC=%~dp0\HLSLcc.exe" +@SET "STRINGIFY=%~dp0\Stringify.exe" +@SET "HELPER_FXC=%~dp0\helper_fxc" + +@CALL %HELPER_FXC% +@IF ERRORLEVEL 1 GOTO error + +:: static const unsigned int HLSLCC_FLAG_UNIFORM_BUFFER_OBJECT = 0x1; +@%HLSL_CC% %HLSL_CC_CMD_LINE% +@IF ERRORLEVEL 1 GOTO error + +@%STRINGIFY% %STRINGIFY_CMD_LINE% +@IF ERRORLEVEL 1 GOTO error + +:done +@EXIT /B 0 + +:error +@echo %0: ERROR +@EXIT /B 1 diff --git a/src/shaders/out/d3d11/BlurX_PS.cpp b/src/shaders/out/d3d11/BlurX_PS.cpp new file mode 100644 index 0000000..8b6f710 --- /dev/null +++ b/src/shaders/out/d3d11/BlurX_PS.cpp @@ -0,0 +1,1674 @@ +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 xy 0 TARGET float xy +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[6], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2d (float,float,float,float) t0 +dcl_input_ps linear v1.xy +dcl_output o0.xy +dcl_temps 4 +mov r0.xz, cb0[1].zzzz +mov r0.yw, l(0,0,0,2.000000) +add r1.xy, r0.xyxx, v1.xyxx +sample_indexable(texture2d)(float,float,float,float) r1.xy, r1.xyxx, t0.xyzw, s0 +sample_indexable(texture2d)(float,float,float,float) r1.zw, v1.xyxx, t0.zwxy, s0 +add r2.x, -r1.w, r1.y +add r1.y, r1.y, -r2.x +mul r2.y, -r1.w, cb0[5].w +mad r1.y, r1.y, cb0[5].w, r2.y +mad r1.y, -r1.y, r1.y, l(-0.222222) +exp r1.y, r1.y +mad r1.x, r1.y, r1.x, r1.z +add r1.y, r1.y, l(1.000000) +mad r3.xyzw, r0.zwzw, l(2.000000, 0.000000, -2.000000, -0.000000), v1.xyxy +add r0.xy, -r0.xyxx, v1.xyxx +sample_indexable(texture2d)(float,float,float,float) r0.xy, r0.xyxx, t0.xyzw, s0 +sample_indexable(texture2d)(float,float,float,float) r0.zw, r3.xyxx, t0.zwxy, s0 +sample_indexable(texture2d)(float,float,float,float) r2.zw, r3.zwzz, t0.zwxy, s0 +mad r0.w, -r2.x, l(2.000000), r0.w +mad r0.w, r0.w, cb0[5].w, r2.y +mad r0.w, -r0.w, r0.w, l(-0.888889) +exp r0.w, r0.w +mad r0.z, r0.w, r0.z, r1.x +add r0.w, r0.w, r1.y +add r1.x, -r1.w, r0.y +mov o0.y, r1.w +add r0.y, r0.y, -r1.x +mad r1.x, -r1.x, l(2.000000), r2.w +mad r1.x, r1.x, cb0[5].w, r2.y +mad r0.y, r0.y, cb0[5].w, r2.y +mad r0.y, -r0.y, r0.y, l(-0.222222) +exp r0.y, r0.y +mad r1.x, -r1.x, r1.x, l(-0.888889) +exp r1.x, r1.x +mad r0.x, r0.y, r0.x, r0.z +add r0.y, r0.y, r0.w +add r0.y, r1.x, r0.y +mad r0.x, r1.x, r2.z, r0.x +div o0.x, r0.x, r0.y +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_BlurX_PS_ENABLE_SHARPNESS_PROFILE_0_KERNEL_RADIUS_2_D3D11[] = +{ + 68, 88, 66, 67, 242, 235, + 27, 102, 107, 95, 242, 168, + 26, 47, 103, 142, 141, 171, + 36, 89, 1, 0, 0, 0, + 80, 6, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 3, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 3, 12, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 144, 5, 0, 0, + 80, 0, 0, 0, 100, 1, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 90, 0, + 0, 3, 0, 96, 16, 0, + 0, 0, 0, 0, 88, 24, + 0, 4, 0, 112, 16, 0, + 0, 0, 0, 0, 85, 85, + 0, 0, 98, 16, 0, 3, + 50, 16, 16, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 50, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 4, 0, 0, 0, 54, 0, + 0, 6, 82, 0, 16, 0, + 0, 0, 0, 0, 166, 138, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 54, 0, + 0, 8, 162, 0, 16, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, + 0, 0, 0, 7, 50, 0, + 16, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 70, 16, 16, 0, + 1, 0, 0, 0, 69, 0, + 0, 139, 194, 0, 0, 128, + 67, 85, 21, 0, 50, 0, + 16, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 70, 126, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 69, 0, 0, 139, 194, 0, + 0, 128, 67, 85, 21, 0, + 194, 0, 16, 0, 1, 0, + 0, 0, 70, 16, 16, 0, + 1, 0, 0, 0, 230, 116, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 8, + 18, 0, 16, 0, 2, 0, + 0, 0, 58, 0, 16, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 8, 34, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 9, 34, 0, + 16, 0, 2, 0, 0, 0, + 58, 0, 16, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 58, 128, 32, 0, 0, 0, + 0, 0, 5, 0, 0, 0, + 50, 0, 0, 10, 34, 0, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 58, 128, 32, 0, + 0, 0, 0, 0, 5, 0, + 0, 0, 26, 0, 16, 0, + 2, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 57, 142, + 99, 190, 25, 0, 0, 5, + 34, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 9, 18, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 7, 34, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 12, + 242, 0, 16, 0, 3, 0, + 0, 0, 230, 14, 16, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 64, + 0, 0, 0, 0, 0, 0, + 0, 192, 0, 0, 0, 128, + 70, 20, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 50, 0, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 70, 16, 16, 0, + 1, 0, 0, 0, 69, 0, + 0, 139, 194, 0, 0, 128, + 67, 85, 21, 0, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 70, 126, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 69, 0, 0, 139, 194, 0, + 0, 128, 67, 85, 21, 0, + 194, 0, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 230, 116, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 69, 0, 0, 139, + 194, 0, 0, 128, 67, 85, + 21, 0, 194, 0, 16, 0, + 2, 0, 0, 0, 230, 10, + 16, 0, 3, 0, 0, 0, + 230, 116, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 50, 0, + 0, 10, 130, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 64, + 58, 0, 16, 0, 0, 0, + 0, 0, 50, 0, 0, 10, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 58, 128, + 32, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 26, 0, + 16, 0, 2, 0, 0, 0, + 50, 0, 0, 10, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 57, 142, 99, 191, 25, 0, + 0, 5, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 9, 66, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 7, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 8, 18, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 54, 0, 0, 5, 34, 32, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 18, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 64, + 58, 0, 16, 0, 2, 0, + 0, 0, 50, 0, 0, 10, + 18, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 58, 128, + 32, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 26, 0, + 16, 0, 2, 0, 0, 0, + 50, 0, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 58, 128, 32, 0, + 0, 0, 0, 0, 5, 0, + 0, 0, 26, 0, 16, 0, + 2, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 57, 142, + 99, 190, 25, 0, 0, 5, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 50, 0, + 0, 10, 18, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 57, 142, + 99, 191, 25, 0, 0, 5, + 18, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 9, 18, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 0, 7, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 9, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 2, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 14, 0, 0, 7, 18, 32, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 62, 0, + 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 xy 0 TARGET float xy +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[6], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_resource_texture2d (float,float,float,float) t0 +dcl_input_ps linear v1.xy +dcl_output o0.xy +dcl_temps 5 +mov r0.x, cb0[1].z +mov r0.y, l(3.500000) +mad r0.xyzw, r0.xyxy, l(3.500000, 0.000000, -3.500000, -0.000000), v1.xyxy +sample_indexable(texture2d)(float,float,float,float) r0.xy, r0.xyxx, t0.xyzw, s1 +sample_indexable(texture2d)(float,float,float,float) r0.zw, r0.zwzz, t0.zwxy, s1 +mov r1.xz, cb0[1].zzzz +mov r1.yw, l(0,0,0,2.000000) +add r2.xy, r1.xyxx, v1.xyxx +sample_indexable(texture2d)(float,float,float,float) r2.xy, r2.xyxx, t0.xyzw, s0 +sample_indexable(texture2d)(float,float,float,float) r2.zw, v1.xyxx, t0.zwxy, s0 +add r3.x, -r2.w, r2.y +add r2.y, r2.y, -r3.x +mul r3.y, -r2.w, cb0[5].w +mad r2.y, r2.y, cb0[5].w, r3.y +mad r2.y, -r2.y, r2.y, l(-0.080000) +exp r2.y, r2.y +mad r2.x, r2.y, r2.x, r2.z +add r2.y, r2.y, l(1.000000) +mad r4.xyzw, r1.zwzw, l(2.000000, 0.000000, -2.000000, -0.000000), v1.xyxy +add r1.xy, -r1.xyxx, v1.xyxx +sample_indexable(texture2d)(float,float,float,float) r1.xy, r1.xyxx, t0.xyzw, s0 +sample_indexable(texture2d)(float,float,float,float) r1.zw, r4.xyxx, t0.zwxy, s0 +sample_indexable(texture2d)(float,float,float,float) r3.zw, r4.zwzz, t0.zwxy, s0 +mad r1.w, -r3.x, l(2.000000), r1.w +mad r0.y, -r3.x, l(3.000000), r0.y +mad r0.y, r0.y, cb0[5].w, r3.y +mad r0.y, -r0.y, r0.y, l(-0.720000) +exp r0.y, r0.y +mad r1.w, r1.w, cb0[5].w, r3.y +mad r1.w, -r1.w, r1.w, l(-0.320000) +exp r1.w, r1.w +mad r1.z, r1.w, r1.z, r2.x +add r1.w, r1.w, r2.y +add r1.w, r0.y, r1.w +mad r0.x, r0.y, r0.x, r1.z +add r0.y, -r2.w, r1.y +mov o0.y, r2.w +add r1.y, -r0.y, r1.y +mad r1.y, r1.y, cb0[5].w, r3.y +mad r1.y, -r1.y, r1.y, l(-0.080000) +exp r1.y, r1.y +mad r0.x, r1.y, r1.x, r0.x +add r1.x, r1.y, r1.w +mad r1.y, -r0.y, l(2.000000), r3.w +mad r0.y, -r0.y, l(3.000000), r0.w +mad r0.y, r0.y, cb0[5].w, r3.y +mad r0.w, r1.y, cb0[5].w, r3.y +mad r0.w, -r0.w, r0.w, l(-0.320000) +exp r0.w, r0.w +mad r0.y, -r0.y, r0.y, l(-0.720000) +exp r0.y, r0.y +mad r0.x, r0.w, r3.z, r0.x +add r0.w, r0.w, r1.x +add r0.w, r0.y, r0.w +mad r0.x, r0.y, r0.z, r0.x +div o0.x, r0.x, r0.w +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_BlurX_PS_ENABLE_SHARPNESS_PROFILE_0_KERNEL_RADIUS_4_D3D11[] = +{ + 68, 88, 66, 67, 209, 108, + 146, 239, 6, 218, 185, 106, + 182, 38, 76, 105, 61, 253, + 164, 188, 1, 0, 0, 0, + 168, 8, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 3, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 3, 12, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 232, 7, 0, 0, + 80, 0, 0, 0, 250, 1, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 90, 0, + 0, 3, 0, 96, 16, 0, + 0, 0, 0, 0, 90, 0, + 0, 3, 0, 96, 16, 0, + 1, 0, 0, 0, 88, 24, + 0, 4, 0, 112, 16, 0, + 0, 0, 0, 0, 85, 85, + 0, 0, 98, 16, 0, 3, + 50, 16, 16, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 50, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 5, 0, 0, 0, 54, 0, + 0, 6, 18, 0, 16, 0, + 0, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 34, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 96, 64, + 50, 0, 0, 12, 242, 0, + 16, 0, 0, 0, 0, 0, + 70, 4, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 96, 64, 0, 0, + 0, 0, 0, 0, 96, 192, + 0, 0, 0, 128, 70, 20, + 16, 0, 1, 0, 0, 0, + 69, 0, 0, 139, 194, 0, + 0, 128, 67, 85, 21, 0, + 50, 0, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 70, 126, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 1, 0, + 0, 0, 69, 0, 0, 139, + 194, 0, 0, 128, 67, 85, + 21, 0, 194, 0, 16, 0, + 0, 0, 0, 0, 230, 10, + 16, 0, 0, 0, 0, 0, + 230, 116, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 6, 82, 0, 16, 0, + 1, 0, 0, 0, 166, 138, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 54, 0, + 0, 8, 162, 0, 16, 0, + 1, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, + 0, 0, 0, 7, 50, 0, + 16, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 70, 16, 16, 0, + 1, 0, 0, 0, 69, 0, + 0, 139, 194, 0, 0, 128, + 67, 85, 21, 0, 50, 0, + 16, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 2, 0, + 0, 0, 70, 126, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 69, 0, 0, 139, 194, 0, + 0, 128, 67, 85, 21, 0, + 194, 0, 16, 0, 2, 0, + 0, 0, 70, 16, 16, 0, + 1, 0, 0, 0, 230, 116, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 8, + 18, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 26, 0, 16, 0, + 2, 0, 0, 0, 0, 0, + 0, 8, 34, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 2, 0, 0, 0, + 10, 0, 16, 128, 65, 0, + 0, 0, 3, 0, 0, 0, + 56, 0, 0, 9, 34, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 58, 128, 32, 0, 0, 0, + 0, 0, 5, 0, 0, 0, + 50, 0, 0, 10, 34, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 2, 0, + 0, 0, 58, 128, 32, 0, + 0, 0, 0, 0, 5, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 2, 0, 0, 0, + 1, 64, 0, 0, 10, 215, + 163, 189, 25, 0, 0, 5, + 34, 0, 16, 0, 2, 0, + 0, 0, 26, 0, 16, 0, + 2, 0, 0, 0, 50, 0, + 0, 9, 18, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 2, 0, 0, 0, + 10, 0, 16, 0, 2, 0, + 0, 0, 42, 0, 16, 0, + 2, 0, 0, 0, 0, 0, + 0, 7, 34, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 2, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 12, + 242, 0, 16, 0, 4, 0, + 0, 0, 230, 14, 16, 0, + 1, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 64, + 0, 0, 0, 0, 0, 0, + 0, 192, 0, 0, 0, 128, + 70, 20, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 50, 0, 16, 0, 1, 0, + 0, 0, 70, 0, 16, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 70, 16, 16, 0, + 1, 0, 0, 0, 69, 0, + 0, 139, 194, 0, 0, 128, + 67, 85, 21, 0, 50, 0, + 16, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 70, 126, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 69, 0, 0, 139, 194, 0, + 0, 128, 67, 85, 21, 0, + 194, 0, 16, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 116, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 69, 0, 0, 139, + 194, 0, 0, 128, 67, 85, + 21, 0, 194, 0, 16, 0, + 3, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 230, 116, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 50, 0, + 0, 10, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 64, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 34, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 128, + 65, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 64, 64, 26, 0, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 58, 128, 32, 0, + 0, 0, 0, 0, 5, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 235, 81, + 56, 191, 25, 0, 0, 5, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 50, 0, + 0, 10, 130, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 58, 128, 32, 0, 0, 0, + 0, 0, 5, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 130, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 10, 215, 163, 190, + 25, 0, 0, 5, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 2, 0, + 0, 0, 0, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 2, 0, 0, 0, + 0, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 9, 18, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 8, 34, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 34, 32, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 0, 0, 0, 8, + 34, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 58, 128, 32, 0, 0, 0, + 0, 0, 5, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 34, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 10, 215, 163, 189, + 25, 0, 0, 5, 34, 0, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 7, + 18, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 10, 34, 0, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 64, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 64, 64, + 58, 0, 16, 0, 0, 0, + 0, 0, 50, 0, 0, 10, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 58, 128, + 32, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 130, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 58, 128, 32, 0, + 0, 0, 0, 0, 5, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 10, 215, + 163, 190, 25, 0, 0, 5, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 235, 81, + 56, 191, 25, 0, 0, 5, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 50, 0, + 0, 9, 18, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 0, 7, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 9, 18, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 14, 0, 0, 7, 18, 32, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 62, 0, + 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 xy 0 TARGET float xy +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[6], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2d (float,float,float,float) t0 +dcl_input_ps linear v1.xy +dcl_output o0.xy +dcl_temps 4 +mov r0.xz, cb0[1].zzzz +mov r0.yw, l(0,0,0,2.000000) +add r1.xy, r0.xyxx, v1.xyxx +sample_indexable(texture2d)(float,float,float,float) r1.xy, r1.xyxx, t0.xyzw, s0 +sample_indexable(texture2d)(float,float,float,float) r1.zw, v1.xyxx, t0.zwxy, s0 +add r2.x, -r1.w, r1.y +add r1.y, r1.y, -r2.x +add r2.yz, -cb0[5].xxzx, cb0[5].yywy +add r2.w, r1.w, -cb0[5].x +div_sat r2.y, r2.w, r2.y +mad r2.y, r2.y, r2.z, cb0[5].z +mul r2.z, -r1.w, r2.y +mad r1.y, r1.y, r2.y, r2.z +mad r1.y, -r1.y, r1.y, l(-0.222222) +exp r1.y, r1.y +mad r1.x, r1.y, r1.x, r1.z +add r1.y, r1.y, l(1.000000) +mad r3.xyzw, r0.zwzw, l(2.000000, 0.000000, -2.000000, -0.000000), v1.xyxy +add r0.xy, -r0.xyxx, v1.xyxx +sample_indexable(texture2d)(float,float,float,float) r0.xy, r0.xyxx, t0.xyzw, s0 +sample_indexable(texture2d)(float,float,float,float) r0.zw, r3.xyxx, t0.zwxy, s0 +sample_indexable(texture2d)(float,float,float,float) r3.xy, r3.zwzz, t0.xyzw, s0 +mad r0.w, -r2.x, l(2.000000), r0.w +mad r0.w, r0.w, r2.y, r2.z +mad r0.w, -r0.w, r0.w, l(-0.888889) +exp r0.w, r0.w +mad r0.z, r0.w, r0.z, r1.x +add r0.w, r0.w, r1.y +add r1.x, -r1.w, r0.y +mov o0.y, r1.w +add r0.y, r0.y, -r1.x +mad r1.x, -r1.x, l(2.000000), r3.y +mad r1.x, r1.x, r2.y, r2.z +mad r0.y, r0.y, r2.y, r2.z +mad r0.y, -r0.y, r0.y, l(-0.222222) +exp r0.y, r0.y +mad r1.x, -r1.x, r1.x, l(-0.888889) +exp r1.x, r1.x +mad r0.x, r0.y, r0.x, r0.z +add r0.y, r0.y, r0.w +add r0.y, r1.x, r0.y +mad r0.x, r1.x, r3.x, r0.x +div o0.x, r0.x, r0.y +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_BlurX_PS_ENABLE_SHARPNESS_PROFILE_1_KERNEL_RADIUS_2_D3D11[] = +{ + 68, 88, 66, 67, 178, 206, + 75, 99, 202, 110, 213, 102, + 139, 73, 140, 59, 246, 236, + 213, 175, 1, 0, 0, 0, + 204, 6, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 3, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 3, 12, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 12, 6, 0, 0, + 80, 0, 0, 0, 131, 1, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 90, 0, + 0, 3, 0, 96, 16, 0, + 0, 0, 0, 0, 88, 24, + 0, 4, 0, 112, 16, 0, + 0, 0, 0, 0, 85, 85, + 0, 0, 98, 16, 0, 3, + 50, 16, 16, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 50, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 4, 0, 0, 0, 54, 0, + 0, 6, 82, 0, 16, 0, + 0, 0, 0, 0, 166, 138, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 54, 0, + 0, 8, 162, 0, 16, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, + 0, 0, 0, 7, 50, 0, + 16, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 70, 16, 16, 0, + 1, 0, 0, 0, 69, 0, + 0, 139, 194, 0, 0, 128, + 67, 85, 21, 0, 50, 0, + 16, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 70, 126, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 69, 0, 0, 139, 194, 0, + 0, 128, 67, 85, 21, 0, + 194, 0, 16, 0, 1, 0, + 0, 0, 70, 16, 16, 0, + 1, 0, 0, 0, 230, 116, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 8, + 18, 0, 16, 0, 2, 0, + 0, 0, 58, 0, 16, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 8, 34, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 10, 98, 0, + 16, 0, 2, 0, 0, 0, + 6, 130, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 86, 135, + 32, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 10, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 14, 32, + 0, 7, 34, 0, 16, 0, + 2, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 2, 0, + 0, 0, 50, 0, 0, 10, + 34, 0, 16, 0, 2, 0, + 0, 0, 26, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 5, 0, 0, 0, + 56, 0, 0, 8, 66, 0, + 16, 0, 2, 0, 0, 0, + 58, 0, 16, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 2, 0, + 0, 0, 50, 0, 0, 9, + 34, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 2, 0, 0, 0, + 42, 0, 16, 0, 2, 0, + 0, 0, 50, 0, 0, 10, + 34, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 57, 142, 99, 190, + 25, 0, 0, 5, 34, 0, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 9, + 18, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 7, + 34, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 12, 242, 0, + 16, 0, 3, 0, 0, 0, + 230, 14, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 64, 0, 0, + 0, 0, 0, 0, 0, 192, + 0, 0, 0, 128, 70, 20, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 70, 16, 16, 0, 1, 0, + 0, 0, 69, 0, 0, 139, + 194, 0, 0, 128, 67, 85, + 21, 0, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 69, 0, + 0, 139, 194, 0, 0, 128, + 67, 85, 21, 0, 194, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 3, 0, + 0, 0, 230, 116, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 69, 0, 0, 139, 194, 0, + 0, 128, 67, 85, 21, 0, + 50, 0, 16, 0, 3, 0, + 0, 0, 230, 10, 16, 0, + 3, 0, 0, 0, 70, 126, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 50, 0, 0, 10, + 130, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 64, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 50, 0, 0, 10, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 57, 142, 99, 191, 25, 0, + 0, 5, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 9, 66, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 7, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 8, 18, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 54, 0, 0, 5, 34, 32, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 18, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 64, + 26, 0, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 9, + 18, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 2, 0, 0, 0, + 42, 0, 16, 0, 2, 0, + 0, 0, 50, 0, 0, 9, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 2, 0, 0, 0, + 42, 0, 16, 0, 2, 0, + 0, 0, 50, 0, 0, 10, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 57, 142, 99, 190, + 25, 0, 0, 5, 34, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 50, 0, 0, 10, + 18, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 57, 142, 99, 191, + 25, 0, 0, 5, 18, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 7, 34, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 50, 0, + 0, 9, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 14, 0, + 0, 7, 18, 32, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 62, 0, 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 xy 0 TARGET float xy +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[6], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_resource_texture2d (float,float,float,float) t0 +dcl_input_ps linear v1.xy +dcl_output o0.xy +dcl_temps 5 +mov r0.x, cb0[1].z +mov r0.y, l(3.500000) +mad r0.xyzw, r0.xyxy, l(3.500000, 0.000000, -3.500000, -0.000000), v1.xyxy +sample_indexable(texture2d)(float,float,float,float) r0.xy, r0.xyxx, t0.xyzw, s1 +sample_indexable(texture2d)(float,float,float,float) r0.zw, r0.zwzz, t0.zwxy, s1 +mov r1.xz, cb0[1].zzzz +mov r1.yw, l(0,0,0,2.000000) +add r2.xy, r1.xyxx, v1.xyxx +sample_indexable(texture2d)(float,float,float,float) r2.xy, r2.xyxx, t0.xyzw, s0 +sample_indexable(texture2d)(float,float,float,float) r2.zw, v1.xyxx, t0.zwxy, s0 +add r3.x, -r2.w, r2.y +add r2.y, r2.y, -r3.x +add r3.yz, -cb0[5].xxzx, cb0[5].yywy +add r3.w, r2.w, -cb0[5].x +div_sat r3.y, r3.w, r3.y +mad r3.y, r3.y, r3.z, cb0[5].z +mul r3.z, -r2.w, r3.y +mad r2.y, r2.y, r3.y, r3.z +mad r2.y, -r2.y, r2.y, l(-0.080000) +exp r2.y, r2.y +mad r2.x, r2.y, r2.x, r2.z +add r2.y, r2.y, l(1.000000) +mad r4.xyzw, r1.zwzw, l(2.000000, 0.000000, -2.000000, -0.000000), v1.xyxy +add r1.xy, -r1.xyxx, v1.xyxx +sample_indexable(texture2d)(float,float,float,float) r1.xy, r1.xyxx, t0.xyzw, s0 +sample_indexable(texture2d)(float,float,float,float) r1.zw, r4.xyxx, t0.zwxy, s0 +sample_indexable(texture2d)(float,float,float,float) r4.xy, r4.zwzz, t0.xyzw, s0 +mad r1.w, -r3.x, l(2.000000), r1.w +mad r0.y, -r3.x, l(3.000000), r0.y +mad r0.y, r0.y, r3.y, r3.z +mad r0.y, -r0.y, r0.y, l(-0.720000) +exp r0.y, r0.y +mad r1.w, r1.w, r3.y, r3.z +mad r1.w, -r1.w, r1.w, l(-0.320000) +exp r1.w, r1.w +mad r1.z, r1.w, r1.z, r2.x +add r1.w, r1.w, r2.y +add r1.w, r0.y, r1.w +mad r0.x, r0.y, r0.x, r1.z +add r0.y, -r2.w, r1.y +mov o0.y, r2.w +add r1.y, -r0.y, r1.y +mad r1.y, r1.y, r3.y, r3.z +mad r1.y, -r1.y, r1.y, l(-0.080000) +exp r1.y, r1.y +mad r0.x, r1.y, r1.x, r0.x +add r1.x, r1.y, r1.w +mad r1.y, -r0.y, l(2.000000), r4.y +mad r0.y, -r0.y, l(3.000000), r0.w +mad r0.y, r0.y, r3.y, r3.z +mad r0.w, r1.y, r3.y, r3.z +mad r0.w, -r0.w, r0.w, l(-0.320000) +exp r0.w, r0.w +mad r0.y, -r0.y, r0.y, l(-0.720000) +exp r0.y, r0.y +mad r0.x, r0.w, r4.x, r0.x +add r0.w, r0.w, r1.x +add r0.w, r0.y, r0.w +mad r0.x, r0.y, r0.z, r0.x +div o0.x, r0.x, r0.w +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_BlurX_PS_ENABLE_SHARPNESS_PROFILE_1_KERNEL_RADIUS_4_D3D11[] = +{ + 68, 88, 66, 67, 116, 117, + 236, 18, 146, 219, 109, 93, + 131, 109, 18, 245, 169, 97, + 184, 252, 1, 0, 0, 0, + 28, 9, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 3, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 3, 12, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 92, 8, 0, 0, + 80, 0, 0, 0, 23, 2, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 90, 0, + 0, 3, 0, 96, 16, 0, + 0, 0, 0, 0, 90, 0, + 0, 3, 0, 96, 16, 0, + 1, 0, 0, 0, 88, 24, + 0, 4, 0, 112, 16, 0, + 0, 0, 0, 0, 85, 85, + 0, 0, 98, 16, 0, 3, + 50, 16, 16, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 50, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 5, 0, 0, 0, 54, 0, + 0, 6, 18, 0, 16, 0, + 0, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 34, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 96, 64, + 50, 0, 0, 12, 242, 0, + 16, 0, 0, 0, 0, 0, + 70, 4, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 96, 64, 0, 0, + 0, 0, 0, 0, 96, 192, + 0, 0, 0, 128, 70, 20, + 16, 0, 1, 0, 0, 0, + 69, 0, 0, 139, 194, 0, + 0, 128, 67, 85, 21, 0, + 50, 0, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 70, 126, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 1, 0, + 0, 0, 69, 0, 0, 139, + 194, 0, 0, 128, 67, 85, + 21, 0, 194, 0, 16, 0, + 0, 0, 0, 0, 230, 10, + 16, 0, 0, 0, 0, 0, + 230, 116, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 6, 82, 0, 16, 0, + 1, 0, 0, 0, 166, 138, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 54, 0, + 0, 8, 162, 0, 16, 0, + 1, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, + 0, 0, 0, 7, 50, 0, + 16, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 70, 16, 16, 0, + 1, 0, 0, 0, 69, 0, + 0, 139, 194, 0, 0, 128, + 67, 85, 21, 0, 50, 0, + 16, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 2, 0, + 0, 0, 70, 126, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 69, 0, 0, 139, 194, 0, + 0, 128, 67, 85, 21, 0, + 194, 0, 16, 0, 2, 0, + 0, 0, 70, 16, 16, 0, + 1, 0, 0, 0, 230, 116, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 8, + 18, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 26, 0, 16, 0, + 2, 0, 0, 0, 0, 0, + 0, 8, 34, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 2, 0, 0, 0, + 10, 0, 16, 128, 65, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 10, 98, 0, + 16, 0, 3, 0, 0, 0, + 6, 130, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 86, 135, + 32, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 10, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 14, 32, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 5, 0, 0, 0, + 56, 0, 0, 8, 66, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 9, + 34, 0, 16, 0, 2, 0, + 0, 0, 26, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 34, 0, 16, 0, 2, 0, + 0, 0, 26, 0, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 26, 0, 16, 0, + 2, 0, 0, 0, 1, 64, + 0, 0, 10, 215, 163, 189, + 25, 0, 0, 5, 34, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 2, 0, + 0, 0, 50, 0, 0, 9, + 18, 0, 16, 0, 2, 0, + 0, 0, 26, 0, 16, 0, + 2, 0, 0, 0, 10, 0, + 16, 0, 2, 0, 0, 0, + 42, 0, 16, 0, 2, 0, + 0, 0, 0, 0, 0, 7, + 34, 0, 16, 0, 2, 0, + 0, 0, 26, 0, 16, 0, + 2, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 12, 242, 0, + 16, 0, 4, 0, 0, 0, + 230, 14, 16, 0, 1, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 64, 0, 0, + 0, 0, 0, 0, 0, 192, + 0, 0, 0, 128, 70, 20, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 50, 0, + 16, 0, 1, 0, 0, 0, + 70, 0, 16, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 70, 16, 16, 0, 1, 0, + 0, 0, 69, 0, 0, 139, + 194, 0, 0, 128, 67, 85, + 21, 0, 50, 0, 16, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 69, 0, + 0, 139, 194, 0, 0, 128, + 67, 85, 21, 0, 194, 0, + 16, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 116, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 69, 0, 0, 139, 194, 0, + 0, 128, 67, 85, 21, 0, + 50, 0, 16, 0, 4, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 126, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 50, 0, 0, 10, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 128, + 65, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 64, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 128, 65, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 64, 64, 26, 0, 16, 0, + 0, 0, 0, 0, 50, 0, + 0, 9, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 235, 81, + 56, 191, 25, 0, 0, 5, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 130, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 10, 215, + 163, 190, 25, 0, 0, 5, + 130, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 2, 0, 0, 0, 0, 0, + 0, 7, 130, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 2, 0, + 0, 0, 0, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 9, 18, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 34, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 34, 32, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 0, 0, + 0, 8, 34, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 9, 34, 0, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 34, 0, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 10, 215, 163, 189, 25, 0, + 0, 5, 34, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 9, 18, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 7, 18, 0, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 64, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 64, 64, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 9, 34, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 10, 215, 163, 190, 25, 0, + 0, 5, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 235, 81, 56, 191, 25, 0, + 0, 5, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 9, 18, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 7, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 7, 130, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 50, 0, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 14, 0, 0, 7, + 18, 32, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 62, 0, 0, 1 +}; + +namespace Generated +{ + void BlurX_PS::Create(DevicePointer Device) + { + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_0][ShaderPermutations::KERNEL_RADIUS_2].Create(Device, g_BlurX_PS_ENABLE_SHARPNESS_PROFILE_0_KERNEL_RADIUS_2_D3D11, sizeof(g_BlurX_PS_ENABLE_SHARPNESS_PROFILE_0_KERNEL_RADIUS_2_D3D11)); + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_0][ShaderPermutations::KERNEL_RADIUS_4].Create(Device, g_BlurX_PS_ENABLE_SHARPNESS_PROFILE_0_KERNEL_RADIUS_4_D3D11, sizeof(g_BlurX_PS_ENABLE_SHARPNESS_PROFILE_0_KERNEL_RADIUS_4_D3D11)); + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_1][ShaderPermutations::KERNEL_RADIUS_2].Create(Device, g_BlurX_PS_ENABLE_SHARPNESS_PROFILE_1_KERNEL_RADIUS_2_D3D11, sizeof(g_BlurX_PS_ENABLE_SHARPNESS_PROFILE_1_KERNEL_RADIUS_2_D3D11)); + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_1][ShaderPermutations::KERNEL_RADIUS_4].Create(Device, g_BlurX_PS_ENABLE_SHARPNESS_PROFILE_1_KERNEL_RADIUS_4_D3D11, sizeof(g_BlurX_PS_ENABLE_SHARPNESS_PROFILE_1_KERNEL_RADIUS_4_D3D11)); + } + + void BlurX_PS::Release(DevicePointer Device) + { + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_0][ShaderPermutations::KERNEL_RADIUS_2].Release(Device); + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_0][ShaderPermutations::KERNEL_RADIUS_4].Release(Device); + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_1][ShaderPermutations::KERNEL_RADIUS_2].Release(Device); + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_1][ShaderPermutations::KERNEL_RADIUS_4].Release(Device); + } +} diff --git a/src/shaders/out/d3d11/BlurX_PS.h b/src/shaders/out/d3d11/BlurX_PS.h new file mode 100644 index 0000000..6681b76 --- /dev/null +++ b/src/shaders/out/d3d11/BlurX_PS.h @@ -0,0 +1,49 @@ +//! This file was auto-generated. Do not modify manually. +#pragma once + +namespace Generated +{ + +namespace ShaderPermutations +{ + +#ifndef ENABLE_SHARPNESS_PROFILE_DEFINED +#define ENABLE_SHARPNESS_PROFILE_DEFINED + enum ENABLE_SHARPNESS_PROFILE + { + ENABLE_SHARPNESS_PROFILE_0, + ENABLE_SHARPNESS_PROFILE_1, + ENABLE_SHARPNESS_PROFILE_COUNT, + }; +#endif + +#ifndef KERNEL_RADIUS_DEFINED +#define KERNEL_RADIUS_DEFINED + enum KERNEL_RADIUS + { + KERNEL_RADIUS_2, + KERNEL_RADIUS_4, + KERNEL_RADIUS_COUNT, + }; +#endif + +}; + +struct BlurX_PS +{ + void Create(DevicePointer Device); + void Release(DevicePointer Device); + PixelShader& Get(ShaderPermutations::ENABLE_SHARPNESS_PROFILE A, ShaderPermutations::KERNEL_RADIUS B) + { + return m_Shader[A][B]; + } + +private: + PixelShader m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_COUNT][ShaderPermutations::KERNEL_RADIUS_COUNT]; +#if _WIN32 + static_assert(ShaderPermutations::ENABLE_SHARPNESS_PROFILE_COUNT == 2, ""); + static_assert(ShaderPermutations::KERNEL_RADIUS_COUNT == 2, ""); +#endif +}; + +}; diff --git a/src/shaders/out/d3d11/BlurY_PS.cpp b/src/shaders/out/d3d11/BlurY_PS.cpp new file mode 100644 index 0000000..27c5b60 --- /dev/null +++ b/src/shaders/out/d3d11/BlurY_PS.cpp @@ -0,0 +1,1769 @@ +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[8], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2d (float,float,float,float) t0 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.xyzw +dcl_temps 3 +add r0.xy, v0.xyxx, -cb0[7].xyxx +mov r1.xz, l(0,0,-0.000000,0) +mov r1.yw, cb0[1].wwww +mad r0.zw, r0.xxxy, cb0[1].zzzw, r1.xxxy +sample_indexable(texture2d)(float,float,float,float) r0.zw, r0.zwzz, t0.zwxy, s0 +mul r2.xy, r0.xyxx, cb0[1].zwzz +mad r0.xy, r0.xyxx, cb0[1].zwzz, -r1.xyxx +mad r1.xyzw, l(2.000000, 2.000000, 2.000000, -2.000000), r1.xyzw, r2.xyxy +sample_indexable(texture2d)(float,float,float,float) r2.xy, r2.xyxx, t0.xyzw, s0 +sample_indexable(texture2d)(float,float,float,float) r0.xy, r0.xyxx, t0.xyzw, s0 +add r2.z, r0.w, -r2.y +add r0.w, r0.w, -r2.z +mul r2.w, -r2.y, cb0[5].w +mad r0.w, r0.w, cb0[5].w, r2.w +mad r0.w, -r0.w, r0.w, l(-0.222222) +exp r0.w, r0.w +mad r0.z, r0.w, r0.z, r2.x +add r0.w, r0.w, l(1.000000) +add r2.x, -r2.y, r0.y +sample_indexable(texture2d)(float,float,float,float) r1.xy, r1.xyxx, t0.xyzw, s0 +sample_indexable(texture2d)(float,float,float,float) r1.zw, r1.zwzz, t0.zwxy, s0 +mad r1.y, -r2.z, l(2.000000), r1.y +mad r1.y, r1.y, cb0[5].w, r2.w +mad r1.y, -r1.y, r1.y, l(-0.888889) +exp r1.y, r1.y +mad r0.z, r1.y, r1.x, r0.z +add r0.w, r0.w, r1.y +add r0.y, r0.y, -r2.x +mad r1.x, -r2.x, l(2.000000), r1.w +mad r1.x, r1.x, cb0[5].w, r2.w +mad r0.y, r0.y, cb0[5].w, r2.w +mad r0.y, -r0.y, r0.y, l(-0.222222) +exp r0.y, r0.y +mad r1.x, -r1.x, r1.x, l(-0.888889) +exp r1.x, r1.x +mad r0.x, r0.y, r0.x, r0.z +add r0.y, r0.y, r0.w +add r0.y, r1.x, r0.y +mad r0.x, r1.x, r1.z, r0.x +div_sat r0.x, r0.x, r0.y +log r0.x, r0.x +mul r0.x, r0.x, cb0[4].z +exp o0.xyzw, r0.xxxx +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_BlurY_PS_ENABLE_SHARPNESS_PROFILE_0_KERNEL_RADIUS_2_D3D11[] = +{ + 68, 88, 66, 67, 131, 245, + 123, 191, 165, 27, 11, 216, + 64, 3, 240, 44, 3, 38, + 164, 254, 1, 0, 0, 0, + 228, 6, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 36, 6, 0, 0, + 80, 0, 0, 0, 137, 1, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 90, 0, + 0, 3, 0, 96, 16, 0, + 0, 0, 0, 0, 88, 24, + 0, 4, 0, 112, 16, 0, + 0, 0, 0, 0, 85, 85, + 0, 0, 100, 32, 0, 4, + 50, 16, 16, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 101, 0, 0, 3, 242, 32, + 16, 0, 0, 0, 0, 0, + 104, 0, 0, 2, 3, 0, + 0, 0, 0, 0, 0, 9, + 50, 0, 16, 0, 0, 0, + 0, 0, 70, 16, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 7, 0, + 0, 0, 54, 0, 0, 8, + 82, 0, 16, 0, 1, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 128, + 0, 0, 0, 0, 54, 0, + 0, 6, 162, 0, 16, 0, + 1, 0, 0, 0, 246, 143, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 6, 4, 16, 0, 1, 0, + 0, 0, 69, 0, 0, 139, + 194, 0, 0, 128, 67, 85, + 21, 0, 194, 0, 16, 0, + 0, 0, 0, 0, 230, 10, + 16, 0, 0, 0, 0, 0, + 230, 116, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 8, 50, 0, 16, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 50, 0, 0, 12, + 242, 0, 16, 0, 1, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 64, 0, 0, + 0, 64, 0, 0, 0, 64, + 0, 0, 0, 192, 70, 14, + 16, 0, 1, 0, 0, 0, + 70, 4, 16, 0, 2, 0, + 0, 0, 69, 0, 0, 139, + 194, 0, 0, 128, 67, 85, + 21, 0, 50, 0, 16, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 2, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 69, 0, + 0, 139, 194, 0, 0, 128, + 67, 85, 21, 0, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 70, 126, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 66, 0, + 16, 0, 2, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 8, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 58, 128, + 32, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 50, 0, + 0, 10, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 58, 128, 32, 0, 0, 0, + 0, 0, 5, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 50, 0, 0, 10, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 57, 142, 99, 190, + 25, 0, 0, 5, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 50, 0, 0, 9, + 66, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 2, 0, + 0, 0, 0, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 0, 0, 0, 8, 18, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 69, 0, 0, 139, + 194, 0, 0, 128, 67, 85, + 21, 0, 50, 0, 16, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 69, 0, + 0, 139, 194, 0, 0, 128, + 67, 85, 21, 0, 194, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 230, 116, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 10, 34, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 64, 26, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 58, 128, 32, 0, 0, 0, + 0, 0, 5, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 50, 0, 0, 10, + 34, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 57, 142, 99, 191, + 25, 0, 0, 5, 34, 0, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 9, + 66, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 34, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 50, 0, 0, 10, + 18, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 64, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 10, 18, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 58, 128, 32, 0, + 0, 0, 0, 0, 5, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 58, 128, 32, 0, 0, 0, + 0, 0, 5, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 50, 0, 0, 10, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 57, 142, 99, 190, + 25, 0, 0, 5, 34, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 50, 0, 0, 10, + 18, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 57, 142, 99, 191, + 25, 0, 0, 5, 18, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 7, 34, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 50, 0, + 0, 9, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 14, 32, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 47, 0, 0, 5, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 8, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 25, 0, 0, 5, 242, 32, + 16, 0, 0, 0, 0, 0, + 6, 0, 16, 0, 0, 0, + 0, 0, 62, 0, 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[8], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_resource_texture2d (float,float,float,float) t0 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.xyzw +dcl_temps 5 +add r0.xy, v0.xyxx, -cb0[7].xyxx +mov r1.xz, l(0,0,-0.000000,0) +mov r1.yw, cb0[1].wwww +mad r0.zw, r0.xxxy, cb0[1].zzzw, r1.xxxy +sample_indexable(texture2d)(float,float,float,float) r0.zw, r0.zwzz, t0.zwxy, s0 +mul r2.xy, r0.xyxx, cb0[1].zwzz +mad r0.xy, r0.xyxx, cb0[1].zwzz, -r1.xyxx +sample_indexable(texture2d)(float,float,float,float) r0.xy, r0.xyxx, t0.xyzw, s0 +sample_indexable(texture2d)(float,float,float,float) r2.zw, r2.xyxx, t0.zwxy, s0 +add r3.x, r0.w, -r2.w +add r0.w, r0.w, -r3.x +mul r3.y, -r2.w, cb0[5].w +mad r0.w, r0.w, cb0[5].w, r3.y +mad r0.w, -r0.w, r0.w, l(-0.080000) +exp r0.w, r0.w +mad r0.z, r0.w, r0.z, r2.z +add r0.w, r0.w, l(1.000000) +add r2.z, r0.y, -r2.w +mad r4.xyzw, l(2.000000, 2.000000, 3.500000, 3.500000), r1.xyxy, r2.xyxy +mad r1.xyzw, l(2.000000, -2.000000, 3.500000, -3.500000), r1.zwzw, r2.xyxy +sample_indexable(texture2d)(float,float,float,float) r2.xy, r4.xyxx, t0.xyzw, s0 +sample_indexable(texture2d)(float,float,float,float) r3.zw, r4.zwzz, t0.zwxy, s1 +mad r2.y, -r3.x, l(2.000000), r2.y +mad r2.w, -r3.x, l(3.000000), r3.w +mad r2.w, r2.w, cb0[5].w, r3.y +mad r2.w, -r2.w, r2.w, l(-0.720000) +exp r2.w, r2.w +mad r2.y, r2.y, cb0[5].w, r3.y +mad r2.y, -r2.y, r2.y, l(-0.320000) +exp r2.y, r2.y +mad r0.z, r2.y, r2.x, r0.z +add r0.w, r0.w, r2.y +add r0.w, r2.w, r0.w +mad r0.z, r2.w, r3.z, r0.z +add r0.y, r0.y, -r2.z +mad r0.y, r0.y, cb0[5].w, r3.y +mad r0.y, -r0.y, r0.y, l(-0.080000) +exp r0.y, r0.y +mad r0.x, r0.y, r0.x, r0.z +add r0.y, r0.y, r0.w +sample_indexable(texture2d)(float,float,float,float) r0.zw, r1.xyxx, t0.zwxy, s0 +sample_indexable(texture2d)(float,float,float,float) r1.xy, r1.zwzz, t0.xyzw, s1 +mad r0.w, -r2.z, l(2.000000), r0.w +mad r1.y, -r2.z, l(3.000000), r1.y +mad r1.y, r1.y, cb0[5].w, r3.y +mad r0.w, r0.w, cb0[5].w, r3.y +mad r0.w, -r0.w, r0.w, l(-0.320000) +exp r0.w, r0.w +mad r1.y, -r1.y, r1.y, l(-0.720000) +exp r1.y, r1.y +mad r0.x, r0.w, r0.z, r0.x +add r0.y, r0.w, r0.y +add r0.y, r1.y, r0.y +mad r0.x, r1.y, r1.x, r0.x +div_sat r0.x, r0.x, r0.y +log r0.x, r0.x +mul r0.x, r0.x, cb0[4].z +exp o0.xyzw, r0.xxxx +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_BlurY_PS_ENABLE_SHARPNESS_PROFILE_0_KERNEL_RADIUS_4_D3D11[] = +{ + 68, 88, 66, 67, 67, 181, + 26, 147, 26, 150, 38, 215, + 252, 53, 227, 182, 146, 35, + 3, 17, 1, 0, 0, 0, + 16, 9, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 80, 8, 0, 0, + 80, 0, 0, 0, 20, 2, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 90, 0, + 0, 3, 0, 96, 16, 0, + 0, 0, 0, 0, 90, 0, + 0, 3, 0, 96, 16, 0, + 1, 0, 0, 0, 88, 24, + 0, 4, 0, 112, 16, 0, + 0, 0, 0, 0, 85, 85, + 0, 0, 100, 32, 0, 4, + 50, 16, 16, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 101, 0, 0, 3, 242, 32, + 16, 0, 0, 0, 0, 0, + 104, 0, 0, 2, 5, 0, + 0, 0, 0, 0, 0, 9, + 50, 0, 16, 0, 0, 0, + 0, 0, 70, 16, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 7, 0, + 0, 0, 54, 0, 0, 8, + 82, 0, 16, 0, 1, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 128, + 0, 0, 0, 0, 54, 0, + 0, 6, 162, 0, 16, 0, + 1, 0, 0, 0, 246, 143, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 6, 4, 16, 0, 1, 0, + 0, 0, 69, 0, 0, 139, + 194, 0, 0, 128, 67, 85, + 21, 0, 194, 0, 16, 0, + 0, 0, 0, 0, 230, 10, + 16, 0, 0, 0, 0, 0, + 230, 116, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 8, 50, 0, 16, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 69, 0, 0, 139, + 194, 0, 0, 128, 67, 85, + 21, 0, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 69, 0, + 0, 139, 194, 0, 0, 128, + 67, 85, 21, 0, 194, 0, + 16, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 2, 0, + 0, 0, 230, 116, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 18, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 8, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 56, 0, + 0, 9, 34, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 58, 128, + 32, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 50, 0, + 0, 10, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 58, 128, 32, 0, 0, 0, + 0, 0, 5, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 10, 215, 163, 189, + 25, 0, 0, 5, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 50, 0, 0, 9, + 66, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 2, 0, + 0, 0, 0, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 0, 0, 0, 8, 66, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 50, 0, 0, 12, + 242, 0, 16, 0, 4, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 64, 0, 0, + 0, 64, 0, 0, 96, 64, + 0, 0, 96, 64, 70, 4, + 16, 0, 1, 0, 0, 0, + 70, 4, 16, 0, 2, 0, + 0, 0, 50, 0, 0, 12, + 242, 0, 16, 0, 1, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 64, 0, 0, + 0, 192, 0, 0, 96, 64, + 0, 0, 96, 192, 230, 14, + 16, 0, 1, 0, 0, 0, + 70, 4, 16, 0, 2, 0, + 0, 0, 69, 0, 0, 139, + 194, 0, 0, 128, 67, 85, + 21, 0, 50, 0, 16, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 69, 0, + 0, 139, 194, 0, 0, 128, + 67, 85, 21, 0, 194, 0, + 16, 0, 3, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 230, 116, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 10, 34, 0, + 16, 0, 2, 0, 0, 0, + 10, 0, 16, 128, 65, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 64, 26, 0, 16, 0, + 2, 0, 0, 0, 50, 0, + 0, 10, 130, 0, 16, 0, + 2, 0, 0, 0, 10, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 64, 64, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 130, 0, 16, 0, 2, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 128, + 32, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 130, 0, + 16, 0, 2, 0, 0, 0, + 58, 0, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 1, 64, 0, 0, + 235, 81, 56, 191, 25, 0, + 0, 5, 130, 0, 16, 0, + 2, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 50, 0, 0, 10, 34, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 2, 0, + 0, 0, 58, 128, 32, 0, + 0, 0, 0, 0, 5, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 2, 0, 0, 0, + 1, 64, 0, 0, 10, 215, + 163, 190, 25, 0, 0, 5, + 34, 0, 16, 0, 2, 0, + 0, 0, 26, 0, 16, 0, + 2, 0, 0, 0, 50, 0, + 0, 9, 66, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 2, 0, 0, 0, + 10, 0, 16, 0, 2, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 0, 7, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 2, 0, + 0, 0, 0, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 9, 66, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 34, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 50, 0, 0, 10, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 58, 128, + 32, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 10, 215, 163, 189, 25, 0, + 0, 5, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 9, 18, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 7, 34, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 69, 0, + 0, 139, 194, 0, 0, 128, + 67, 85, 21, 0, 194, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 230, 116, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 69, 0, 0, 139, 194, 0, + 0, 128, 67, 85, 21, 0, + 50, 0, 16, 0, 1, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 126, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 130, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 64, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 10, 34, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 64, 64, 26, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 58, 128, 32, 0, 0, 0, + 0, 0, 5, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 58, 128, + 32, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 10, 215, 163, 190, 25, 0, + 0, 5, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 10, 34, 0, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 235, 81, 56, 191, 25, 0, + 0, 5, 34, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 9, 18, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 7, 34, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 0, 7, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 50, 0, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 14, 32, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 47, 0, 0, 5, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 8, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 25, 0, + 0, 5, 242, 32, 16, 0, + 0, 0, 0, 0, 6, 0, + 16, 0, 0, 0, 0, 0, + 62, 0, 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[8], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2d (float,float,float,float) t0 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.xyzw +dcl_temps 4 +add r0.xy, v0.xyxx, -cb0[7].xyxx +mov r1.xz, l(0,0,-0.000000,0) +mov r1.yw, cb0[1].wwww +mad r0.zw, r0.xxxy, cb0[1].zzzw, r1.xxxy +sample_indexable(texture2d)(float,float,float,float) r0.zw, r0.zwzz, t0.zwxy, s0 +mul r2.xy, r0.xyxx, cb0[1].zwzz +mad r0.xy, r0.xyxx, cb0[1].zwzz, -r1.xyxx +mad r1.xyzw, l(2.000000, 2.000000, 2.000000, -2.000000), r1.xyzw, r2.xyxy +sample_indexable(texture2d)(float,float,float,float) r2.xy, r2.xyxx, t0.xyzw, s0 +sample_indexable(texture2d)(float,float,float,float) r0.xy, r0.xyxx, t0.xyzw, s0 +add r2.z, r0.w, -r2.y +add r0.w, r0.w, -r2.z +add r2.w, r2.y, -cb0[5].x +add r3.xy, -cb0[5].xzxx, cb0[5].ywyy +div_sat r2.w, r2.w, r3.x +mad r2.w, r2.w, r3.y, cb0[5].z +mul r3.x, r2.w, -r2.y +mad r0.w, r0.w, r2.w, r3.x +mad r0.w, -r0.w, r0.w, l(-0.222222) +exp r0.w, r0.w +mad r0.z, r0.w, r0.z, r2.x +add r0.w, r0.w, l(1.000000) +add r2.x, -r2.y, r0.y +sample_indexable(texture2d)(float,float,float,float) r1.xy, r1.xyxx, t0.xyzw, s0 +sample_indexable(texture2d)(float,float,float,float) r1.zw, r1.zwzz, t0.zwxy, s0 +mad r1.y, -r2.z, l(2.000000), r1.y +mad r1.y, r1.y, r2.w, r3.x +mad r1.y, -r1.y, r1.y, l(-0.888889) +exp r1.y, r1.y +mad r0.z, r1.y, r1.x, r0.z +add r0.w, r0.w, r1.y +add r0.y, r0.y, -r2.x +mad r1.x, -r2.x, l(2.000000), r1.w +mad r1.x, r1.x, r2.w, r3.x +mad r0.y, r0.y, r2.w, r3.x +mad r0.y, -r0.y, r0.y, l(-0.222222) +exp r0.y, r0.y +mad r1.x, -r1.x, r1.x, l(-0.888889) +exp r1.x, r1.x +mad r0.x, r0.y, r0.x, r0.z +add r0.y, r0.y, r0.w +add r0.y, r1.x, r0.y +mad r0.x, r1.x, r1.z, r0.x +div_sat r0.x, r0.x, r0.y +log r0.x, r0.x +mul r0.x, r0.x, cb0[4].z +exp o0.xyzw, r0.xxxx +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_BlurY_PS_ENABLE_SHARPNESS_PROFILE_1_KERNEL_RADIUS_2_D3D11[] = +{ + 68, 88, 66, 67, 103, 3, + 100, 104, 228, 136, 220, 181, + 60, 207, 45, 201, 22, 124, + 123, 2, 1, 0, 0, 0, + 96, 7, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 160, 6, 0, 0, + 80, 0, 0, 0, 168, 1, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 90, 0, + 0, 3, 0, 96, 16, 0, + 0, 0, 0, 0, 88, 24, + 0, 4, 0, 112, 16, 0, + 0, 0, 0, 0, 85, 85, + 0, 0, 100, 32, 0, 4, + 50, 16, 16, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 101, 0, 0, 3, 242, 32, + 16, 0, 0, 0, 0, 0, + 104, 0, 0, 2, 4, 0, + 0, 0, 0, 0, 0, 9, + 50, 0, 16, 0, 0, 0, + 0, 0, 70, 16, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 7, 0, + 0, 0, 54, 0, 0, 8, + 82, 0, 16, 0, 1, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 128, + 0, 0, 0, 0, 54, 0, + 0, 6, 162, 0, 16, 0, + 1, 0, 0, 0, 246, 143, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 6, 4, 16, 0, 1, 0, + 0, 0, 69, 0, 0, 139, + 194, 0, 0, 128, 67, 85, + 21, 0, 194, 0, 16, 0, + 0, 0, 0, 0, 230, 10, + 16, 0, 0, 0, 0, 0, + 230, 116, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 8, 50, 0, 16, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 50, 0, 0, 12, + 242, 0, 16, 0, 1, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 64, 0, 0, + 0, 64, 0, 0, 0, 64, + 0, 0, 0, 192, 70, 14, + 16, 0, 1, 0, 0, 0, + 70, 4, 16, 0, 2, 0, + 0, 0, 69, 0, 0, 139, + 194, 0, 0, 128, 67, 85, + 21, 0, 50, 0, 16, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 2, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 69, 0, + 0, 139, 194, 0, 0, 128, + 67, 85, 21, 0, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 70, 126, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 66, 0, + 16, 0, 2, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 8, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 0, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 2, 0, 0, 0, + 10, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, + 0, 10, 50, 0, 16, 0, + 3, 0, 0, 0, 134, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 5, 0, + 0, 0, 214, 133, 32, 0, + 0, 0, 0, 0, 5, 0, + 0, 0, 14, 32, 0, 7, + 130, 0, 16, 0, 2, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 130, 0, + 16, 0, 2, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 56, 0, + 0, 8, 18, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 57, 142, 99, 190, 25, 0, + 0, 5, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 9, 66, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 2, 0, 0, 0, + 0, 0, 0, 7, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 0, 0, + 0, 8, 18, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 69, 0, 0, 139, 194, 0, + 0, 128, 67, 85, 21, 0, + 50, 0, 16, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 70, 126, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 69, 0, 0, 139, + 194, 0, 0, 128, 67, 85, + 21, 0, 194, 0, 16, 0, + 1, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 230, 116, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 64, + 26, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 9, + 34, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 34, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 57, 142, 99, 191, + 25, 0, 0, 5, 34, 0, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 9, + 66, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 34, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 50, 0, 0, 10, + 18, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 64, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 9, 18, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 9, 34, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 57, 142, 99, 190, 25, 0, + 0, 5, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 10, 18, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 57, 142, 99, 191, 25, 0, + 0, 5, 18, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 9, 18, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 7, 34, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 0, 7, 34, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 50, 0, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 14, 32, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 47, 0, 0, 5, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 8, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 25, 0, + 0, 5, 242, 32, 16, 0, + 0, 0, 0, 0, 6, 0, + 16, 0, 0, 0, 0, 0, + 62, 0, 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[8], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_resource_texture2d (float,float,float,float) t0 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.xyzw +dcl_temps 5 +add r0.xy, v0.xyxx, -cb0[7].xyxx +mov r1.xz, l(0,0,-0.000000,0) +mov r1.yw, cb0[1].wwww +mad r0.zw, r0.xxxy, cb0[1].zzzw, r1.xxxy +sample_indexable(texture2d)(float,float,float,float) r0.zw, r0.zwzz, t0.zwxy, s0 +mul r2.xy, r0.xyxx, cb0[1].zwzz +mad r0.xy, r0.xyxx, cb0[1].zwzz, -r1.xyxx +sample_indexable(texture2d)(float,float,float,float) r0.xy, r0.xyxx, t0.xyzw, s0 +sample_indexable(texture2d)(float,float,float,float) r2.zw, r2.xyxx, t0.zwxy, s0 +add r3.x, r0.w, -r2.w +add r0.w, r0.w, -r3.x +add r3.y, r2.w, -cb0[5].x +add r3.zw, -cb0[5].xxxz, cb0[5].yyyw +div_sat r3.y, r3.y, r3.z +mad r3.y, r3.y, r3.w, cb0[5].z +mul r3.z, -r2.w, r3.y +mad r0.w, r0.w, r3.y, r3.z +mad r0.w, -r0.w, r0.w, l(-0.080000) +exp r0.w, r0.w +mad r0.z, r0.w, r0.z, r2.z +add r0.w, r0.w, l(1.000000) +add r2.z, r0.y, -r2.w +mad r4.xyzw, l(2.000000, 2.000000, 3.500000, 3.500000), r1.xyxy, r2.xyxy +mad r1.xyzw, l(2.000000, -2.000000, 3.500000, -3.500000), r1.zwzw, r2.xyxy +sample_indexable(texture2d)(float,float,float,float) r2.xy, r4.xyxx, t0.xyzw, s0 +sample_indexable(texture2d)(float,float,float,float) r4.xy, r4.zwzz, t0.xyzw, s1 +mad r2.y, -r3.x, l(2.000000), r2.y +mad r2.w, -r3.x, l(3.000000), r4.y +mad r2.w, r2.w, r3.y, r3.z +mad r2.w, -r2.w, r2.w, l(-0.720000) +exp r2.w, r2.w +mad r2.y, r2.y, r3.y, r3.z +mad r2.y, -r2.y, r2.y, l(-0.320000) +exp r2.y, r2.y +mad r0.z, r2.y, r2.x, r0.z +add r0.w, r0.w, r2.y +add r0.w, r2.w, r0.w +mad r0.z, r2.w, r4.x, r0.z +add r0.y, r0.y, -r2.z +mad r0.y, r0.y, r3.y, r3.z +mad r0.y, -r0.y, r0.y, l(-0.080000) +exp r0.y, r0.y +mad r0.x, r0.y, r0.x, r0.z +add r0.y, r0.y, r0.w +sample_indexable(texture2d)(float,float,float,float) r0.zw, r1.xyxx, t0.zwxy, s0 +sample_indexable(texture2d)(float,float,float,float) r1.xy, r1.zwzz, t0.xyzw, s1 +mad r0.w, -r2.z, l(2.000000), r0.w +mad r1.y, -r2.z, l(3.000000), r1.y +mad r1.y, r1.y, r3.y, r3.z +mad r0.w, r0.w, r3.y, r3.z +mad r0.w, -r0.w, r0.w, l(-0.320000) +exp r0.w, r0.w +mad r1.y, -r1.y, r1.y, l(-0.720000) +exp r1.y, r1.y +mad r0.x, r0.w, r0.z, r0.x +add r0.y, r0.w, r0.y +add r0.y, r1.y, r0.y +mad r0.x, r1.y, r1.x, r0.x +div_sat r0.x, r0.x, r0.y +log r0.x, r0.x +mul r0.x, r0.x, cb0[4].z +exp o0.xyzw, r0.xxxx +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_BlurY_PS_ENABLE_SHARPNESS_PROFILE_1_KERNEL_RADIUS_4_D3D11[] = +{ + 68, 88, 66, 67, 134, 25, + 75, 83, 59, 174, 81, 223, + 82, 98, 250, 84, 30, 36, + 225, 105, 1, 0, 0, 0, + 132, 9, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 196, 8, 0, 0, + 80, 0, 0, 0, 49, 2, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 90, 0, + 0, 3, 0, 96, 16, 0, + 0, 0, 0, 0, 90, 0, + 0, 3, 0, 96, 16, 0, + 1, 0, 0, 0, 88, 24, + 0, 4, 0, 112, 16, 0, + 0, 0, 0, 0, 85, 85, + 0, 0, 100, 32, 0, 4, + 50, 16, 16, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 101, 0, 0, 3, 242, 32, + 16, 0, 0, 0, 0, 0, + 104, 0, 0, 2, 5, 0, + 0, 0, 0, 0, 0, 9, + 50, 0, 16, 0, 0, 0, + 0, 0, 70, 16, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 7, 0, + 0, 0, 54, 0, 0, 8, + 82, 0, 16, 0, 1, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 128, + 0, 0, 0, 0, 54, 0, + 0, 6, 162, 0, 16, 0, + 1, 0, 0, 0, 246, 143, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 6, 4, 16, 0, 1, 0, + 0, 0, 69, 0, 0, 139, + 194, 0, 0, 128, 67, 85, + 21, 0, 194, 0, 16, 0, + 0, 0, 0, 0, 230, 10, + 16, 0, 0, 0, 0, 0, + 230, 116, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 8, 50, 0, 16, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 69, 0, 0, 139, + 194, 0, 0, 128, 67, 85, + 21, 0, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 69, 0, + 0, 139, 194, 0, 0, 128, + 67, 85, 21, 0, 194, 0, + 16, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 2, 0, + 0, 0, 230, 116, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 18, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 8, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 9, 34, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 10, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, + 0, 10, 194, 0, 16, 0, + 3, 0, 0, 0, 6, 136, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 5, 0, + 0, 0, 86, 141, 32, 0, + 0, 0, 0, 0, 5, 0, + 0, 0, 14, 32, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 56, 0, + 0, 8, 66, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 10, 215, 163, 189, 25, 0, + 0, 5, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 9, 66, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 0, 0, 0, 7, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 0, 0, + 0, 8, 66, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 50, 0, 0, 12, 242, 0, + 16, 0, 4, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 0, 64, 0, 0, 0, 64, + 0, 0, 96, 64, 0, 0, + 96, 64, 70, 4, 16, 0, + 1, 0, 0, 0, 70, 4, + 16, 0, 2, 0, 0, 0, + 50, 0, 0, 12, 242, 0, + 16, 0, 1, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 0, 64, 0, 0, 0, 192, + 0, 0, 96, 64, 0, 0, + 96, 192, 230, 14, 16, 0, + 1, 0, 0, 0, 70, 4, + 16, 0, 2, 0, 0, 0, + 69, 0, 0, 139, 194, 0, + 0, 128, 67, 85, 21, 0, + 50, 0, 16, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 126, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 69, 0, 0, 139, + 194, 0, 0, 128, 67, 85, + 21, 0, 50, 0, 16, 0, + 4, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 2, 0, 0, 0, 10, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 64, + 26, 0, 16, 0, 2, 0, + 0, 0, 50, 0, 0, 10, + 130, 0, 16, 0, 2, 0, + 0, 0, 10, 0, 16, 128, + 65, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 64, 64, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 2, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 130, 0, + 16, 0, 2, 0, 0, 0, + 58, 0, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 1, 64, 0, 0, + 235, 81, 56, 191, 25, 0, + 0, 5, 130, 0, 16, 0, + 2, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 50, 0, 0, 9, 34, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 2, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 34, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 2, 0, + 0, 0, 1, 64, 0, 0, + 10, 215, 163, 190, 25, 0, + 0, 5, 34, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 2, 0, 0, 0, + 50, 0, 0, 9, 66, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 2, 0, + 0, 0, 10, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 7, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 2, 0, 0, 0, 0, 0, + 0, 7, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 50, 0, 0, 9, + 66, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 8, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 50, 0, + 0, 9, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 10, 215, + 163, 189, 25, 0, 0, 5, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 50, 0, + 0, 9, 18, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 0, 7, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 69, 0, 0, 139, + 194, 0, 0, 128, 67, 85, + 21, 0, 194, 0, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 230, 116, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 69, 0, + 0, 139, 194, 0, 0, 128, + 67, 85, 21, 0, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 70, 126, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 10, 130, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 64, 58, 0, 16, 0, + 0, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 64, 64, + 26, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 9, + 34, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 10, 215, 163, 190, + 25, 0, 0, 5, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 50, 0, 0, 10, + 34, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 235, 81, 56, 191, + 25, 0, 0, 5, 34, 0, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 7, 34, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 50, 0, + 0, 9, 18, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 14, 32, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 47, 0, 0, 5, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 8, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 25, 0, 0, 5, 242, 32, + 16, 0, 0, 0, 0, 0, + 6, 0, 16, 0, 0, 0, + 0, 0, 62, 0, 0, 1 +}; + +namespace Generated +{ + void BlurY_PS::Create(DevicePointer Device) + { + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_0][ShaderPermutations::KERNEL_RADIUS_2].Create(Device, g_BlurY_PS_ENABLE_SHARPNESS_PROFILE_0_KERNEL_RADIUS_2_D3D11, sizeof(g_BlurY_PS_ENABLE_SHARPNESS_PROFILE_0_KERNEL_RADIUS_2_D3D11)); + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_0][ShaderPermutations::KERNEL_RADIUS_4].Create(Device, g_BlurY_PS_ENABLE_SHARPNESS_PROFILE_0_KERNEL_RADIUS_4_D3D11, sizeof(g_BlurY_PS_ENABLE_SHARPNESS_PROFILE_0_KERNEL_RADIUS_4_D3D11)); + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_1][ShaderPermutations::KERNEL_RADIUS_2].Create(Device, g_BlurY_PS_ENABLE_SHARPNESS_PROFILE_1_KERNEL_RADIUS_2_D3D11, sizeof(g_BlurY_PS_ENABLE_SHARPNESS_PROFILE_1_KERNEL_RADIUS_2_D3D11)); + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_1][ShaderPermutations::KERNEL_RADIUS_4].Create(Device, g_BlurY_PS_ENABLE_SHARPNESS_PROFILE_1_KERNEL_RADIUS_4_D3D11, sizeof(g_BlurY_PS_ENABLE_SHARPNESS_PROFILE_1_KERNEL_RADIUS_4_D3D11)); + } + + void BlurY_PS::Release(DevicePointer Device) + { + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_0][ShaderPermutations::KERNEL_RADIUS_2].Release(Device); + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_0][ShaderPermutations::KERNEL_RADIUS_4].Release(Device); + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_1][ShaderPermutations::KERNEL_RADIUS_2].Release(Device); + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_1][ShaderPermutations::KERNEL_RADIUS_4].Release(Device); + } +} diff --git a/src/shaders/out/d3d11/BlurY_PS.h b/src/shaders/out/d3d11/BlurY_PS.h new file mode 100644 index 0000000..9dce231 --- /dev/null +++ b/src/shaders/out/d3d11/BlurY_PS.h @@ -0,0 +1,49 @@ +//! This file was auto-generated. Do not modify manually. +#pragma once + +namespace Generated +{ + +namespace ShaderPermutations +{ + +#ifndef ENABLE_SHARPNESS_PROFILE_DEFINED +#define ENABLE_SHARPNESS_PROFILE_DEFINED + enum ENABLE_SHARPNESS_PROFILE + { + ENABLE_SHARPNESS_PROFILE_0, + ENABLE_SHARPNESS_PROFILE_1, + ENABLE_SHARPNESS_PROFILE_COUNT, + }; +#endif + +#ifndef KERNEL_RADIUS_DEFINED +#define KERNEL_RADIUS_DEFINED + enum KERNEL_RADIUS + { + KERNEL_RADIUS_2, + KERNEL_RADIUS_4, + KERNEL_RADIUS_COUNT, + }; +#endif + +}; + +struct BlurY_PS +{ + void Create(DevicePointer Device); + void Release(DevicePointer Device); + PixelShader& Get(ShaderPermutations::ENABLE_SHARPNESS_PROFILE A, ShaderPermutations::KERNEL_RADIUS B) + { + return m_Shader[A][B]; + } + +private: + PixelShader m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_COUNT][ShaderPermutations::KERNEL_RADIUS_COUNT]; +#if _WIN32 + static_assert(ShaderPermutations::ENABLE_SHARPNESS_PROFILE_COUNT == 2, ""); + static_assert(ShaderPermutations::KERNEL_RADIUS_COUNT == 2, ""); +#endif +}; + +}; diff --git a/src/shaders/out/d3d11/CoarseAO_GS.cpp b/src/shaders/out/d3d11/CoarseAO_GS.cpp new file mode 100644 index 0000000..4dba052 --- /dev/null +++ b/src/shaders/out/d3d11/CoarseAO_GS.cpp @@ -0,0 +1,179 @@ +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xyzw +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xyzw +// TEXCOORD 0 xy 1 NONE float xy +// SV_RenderTargetArrayIndex 0 x 2 RTINDEX uint x +// +gs_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb1[2], immediateIndexed +dcl_input_siv v[3][0].xyzw, position +dcl_input v[3][1].xy +dcl_inputprimitive triangle +dcl_stream m0 +dcl_outputtopology trianglestrip +dcl_output_siv o0.xyzw, position +dcl_output o1.xy +dcl_output_siv o2.x, rendertarget_array_index +dcl_maxout 3 +mov o0.xyzw, v[0][0].xyzw +mov o1.xy, v[0][1].xyxx +mov o2.x, cb1[1].w +emit_stream m0 +mov o0.xyzw, v[1][0].xyzw +mov o1.xy, v[1][1].xyxx +mov o2.x, cb1[1].w +emit_stream m0 +mov o0.xyzw, v[2][0].xyzw +mov o1.xy, v[2][1].xyxx +mov o2.x, cb1[1].w +emit_stream m0 +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CoarseAO_GS_D3D11[] = +{ + 68, 88, 66, 67, 193, 72, + 205, 99, 60, 76, 114, 103, + 198, 76, 168, 118, 44, 179, + 204, 42, 1, 0, 0, 0, + 168, 2, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 24, 1, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 15, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 3, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 53, 140, 0, + 0, 0, 3, 0, 0, 0, + 8, 0, 0, 0, 0, 0, + 0, 0, 92, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 15, 0, + 0, 0, 0, 0, 0, 0, + 104, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 12, 0, 0, + 0, 0, 0, 0, 113, 0, + 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 1, 0, + 0, 0, 2, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 80, 111, 115, 105, 116, + 105, 111, 110, 0, 84, 69, + 88, 67, 79, 79, 82, 68, + 0, 83, 86, 95, 82, 101, + 110, 100, 101, 114, 84, 97, + 114, 103, 101, 116, 65, 114, + 114, 97, 121, 73, 110, 100, + 101, 120, 0, 171, 83, 72, + 69, 88, 136, 1, 0, 0, + 80, 0, 2, 0, 98, 0, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 1, 0, 0, 0, + 2, 0, 0, 0, 97, 0, + 0, 5, 242, 16, 32, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 95, 0, 0, 4, 50, 16, + 32, 0, 3, 0, 0, 0, + 1, 0, 0, 0, 93, 24, + 0, 1, 143, 0, 0, 3, + 0, 0, 17, 0, 0, 0, + 0, 0, 92, 40, 0, 1, + 103, 0, 0, 4, 242, 32, + 16, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 101, 0, + 0, 3, 50, 32, 16, 0, + 1, 0, 0, 0, 103, 0, + 0, 4, 18, 32, 16, 0, + 2, 0, 0, 0, 4, 0, + 0, 0, 94, 0, 0, 2, + 3, 0, 0, 0, 54, 0, + 0, 6, 242, 32, 16, 0, + 0, 0, 0, 0, 70, 30, + 32, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 6, 50, 32, 16, 0, + 1, 0, 0, 0, 70, 16, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 54, 0, + 0, 6, 18, 32, 16, 0, + 2, 0, 0, 0, 58, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 117, 0, + 0, 3, 0, 0, 17, 0, + 0, 0, 0, 0, 54, 0, + 0, 6, 242, 32, 16, 0, + 0, 0, 0, 0, 70, 30, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 6, 50, 32, 16, 0, + 1, 0, 0, 0, 70, 16, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 54, 0, + 0, 6, 18, 32, 16, 0, + 2, 0, 0, 0, 58, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 117, 0, + 0, 3, 0, 0, 17, 0, + 0, 0, 0, 0, 54, 0, + 0, 6, 242, 32, 16, 0, + 0, 0, 0, 0, 70, 30, + 32, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 6, 50, 32, 16, 0, + 1, 0, 0, 0, 70, 16, + 32, 0, 2, 0, 0, 0, + 1, 0, 0, 0, 54, 0, + 0, 6, 18, 32, 16, 0, + 2, 0, 0, 0, 58, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 117, 0, + 0, 3, 0, 0, 17, 0, + 0, 0, 0, 0, 62, 0, + 0, 1 +}; + +namespace Generated +{ + void CoarseAO_GS::Create(DevicePointer Device) + { + m_Shader.Create(Device, g_CoarseAO_GS_D3D11, sizeof(g_CoarseAO_GS_D3D11)); + } + + void CoarseAO_GS::Release(DevicePointer Device) + { + m_Shader.Release(Device); + } +} diff --git a/src/shaders/out/d3d11/CoarseAO_GS.h b/src/shaders/out/d3d11/CoarseAO_GS.h new file mode 100644 index 0000000..5a1dbfb --- /dev/null +++ b/src/shaders/out/d3d11/CoarseAO_GS.h @@ -0,0 +1,27 @@ +//! This file was auto-generated. Do not modify manually. +#pragma once + +namespace Generated +{ + +namespace ShaderPermutations +{ + +}; + +struct CoarseAO_GS +{ + void Create(DevicePointer Device); + void Release(DevicePointer Device); + GeometryShader& Get() + { + return m_Shader; + } + +private: + GeometryShader m_Shader; +#if _WIN32 +#endif +}; + +}; diff --git a/src/shaders/out/d3d11/CoarseAO_PS.cpp b/src/shaders/out/d3d11/CoarseAO_PS.cpp new file mode 100644 index 0000000..8c70d32 --- /dev/null +++ b/src/shaders/out/d3d11/CoarseAO_PS.cpp @@ -0,0 +1,80529 @@ +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[5], immediateIndexed +dcl_constantbuffer cb1[2], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2darray (float,float,float,float) t0 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 7 +round_ni r0.xy, v0.xyxx +mad r0.xy, r0.xyxx, l(4.000000, 4.000000, 0.000000, 0.000000), cb1[1].xyxx +mul r0.zw, r0.xxxy, cb0[1].xxxy +mul r1.xy, r0.zwzz, l(0.250000, 0.250000, 0.000000, 0.000000) +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r2.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +div r0.z, cb0[3].x, r2.z +lt r0.w, r0.z, l(1.000000) +if_nz r0.w + mov o0.x, l(1.000000) + ret +endif +mad r1.zw, cb0[2].xxxy, r1.xxxy, cb0[2].zzzw +mul r2.xy, r2.zzzz, r1.zwzz +ftoi r3.xy, r0.xyxx +mov r3.zw, l(0,0,0,0) +ld_indexable(texture2d)(float,float,float,float) r0.xyw, r3.xyzw, t1.xywz +mad r0.xyw, r0.xyxw, l(2.000000, 2.000000, 0.000000, 2.000000), l(-1.000000, -1.000000, 0.000000, -1.000000) +mul r1.z, r0.z, l(0.050000) +mad r1.z, cb1[0].z, r1.z, l(1.000000) +mul r3.xy, r1.zzzz, cb1[0].xyxx +round_ne r3.xy, r3.xyxx +mad r3.xy, r3.xyxx, cb0[1].xyxx, r1.xyxx +mov r3.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r3.xyzx, t0.yzxw, s0, l(0.000000) +mad r3.xy, cb0[2].xyxx, r3.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r3.xyxx +mad r1.w, r0.z, l(0.050000), r1.z +add r3.xyz, -r2.xyzx, r4.xyzx +dp3 r2.w, r3.xyzx, r3.xyzx +dp3 r3.x, r0.xywx, r3.xyzx +rsq r3.y, r2.w +mad_sat r3.x, r3.x, r3.y, -cb0[3].w +mad_sat r2.w, r2.w, cb0[3].z, l(1.000000) +mul r3.yz, r1.wwww, cb1[0].xxyx +round_ne r3.yz, r3.yyzy +mad r4.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r4.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r3.yz, r3.wwww, r4.xxyx +mad r4.x, r0.z, l(0.050000), r1.w +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mul r4.yz, r4.xxxx, cb1[0].xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +mad r0.z, r0.z, l(0.050000), r4.x +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.w, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.w +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.w, r3.w, cb0[3].z, l(1.000000) +mul r3.w, r3.w, r4.y +mad r3.y, r3.y, r3.z, r3.w +mul r3.zw, r0.zzzz, cb1[0].xxxy +round_ne r3.zw, r3.zzzw +mad r5.xy, r3.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r3.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r3.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.z, r4.yzwy, r4.yzwy +dp3 r3.w, r0.xywx, r4.yzwy +rsq r4.y, r3.z +mad_sat r3.w, r3.w, r4.y, -cb0[3].w +mad_sat r3.z, r3.z, cb0[3].z, l(1.000000) +mad r3.y, r3.w, r3.z, r3.y +mul r3.zw, cb1[0].xxxy, l(0.000000, 0.000000, 0.707107, 0.707107) +mad r5.x, cb1[0].x, l(0.707107), -r3.w +add r5.y, r3.z, r3.w +mul r4.yz, r1.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r5.z, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r5.z +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.z, cb0[3].z, l(1.000000) +mul r4.y, r4.z, r4.y +mad r2.w, r3.x, r2.w, r4.y +mul r4.yz, r1.wwww, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.x, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.x, r3.x, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.x, r3.y +mul r4.yz, r4.xxxx, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mul r4.yz, r0.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mad r5.x, cb1[0].x, l(-0.000000), -cb1[0].y +mad r5.y, cb1[0].y, l(-0.000000), cb1[0].x +mul r4.yz, r1.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r2.w, r4.y, r3.y, r2.w +mul r4.yz, r1.wwww, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mul r4.yz, r4.xxxx, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mul r4.yz, r0.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mad r5.x, cb1[0].x, l(-0.707107), -r3.w +mad r5.y, cb1[0].y, l(-0.707107), r3.z +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r2.w, r3.y, r3.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r4.xxxx, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r0.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r5.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r5.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mad r5.x, -cb1[0].y, l(-0.000000), -cb1[0].x +mad r5.y, cb1[0].x, l(-0.000000), -cb1[0].y +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r2.w, r3.y, r3.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r4.xxxx, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r0.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r5.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r5.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.y, cb1[0].y, l(-0.707107) +mad r5.x, cb1[0].x, l(-0.707107), -r3.y +dp2 r5.y, cb1[0].yxyy, l(-0.707107, -0.707107, 0.000000, 0.000000) +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r2.w, r3.y, r3.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r4.xxxx, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r0.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r5.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r5.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mad r5.x, cb1[0].x, l(0.000000), cb1[0].y +mad r5.y, cb1[0].y, l(0.000000), -cb1[0].x +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r2.w, r3.y, r3.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r4.xxxx, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r0.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r5.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r5.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.y, cb1[0].y, l(-0.707107) +mad r5.x, cb1[0].x, l(0.707107), -r3.y +dp2 r5.y, cb1[0].yxyy, l(0.707107, -0.707107, 0.000000, 0.000000) +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r1.z, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r1.z +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r1.z, r1.z, cb0[3].z, l(1.000000) +mad r1.z, r3.y, r1.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r1.w, r3.yzwy, r3.yzwy +dp3 r2.w, r0.xywx, r3.yzwy +rsq r3.y, r1.w +mad_sat r2.w, r2.w, r3.y, -cb0[3].w +mad_sat r1.w, r1.w, cb0[3].z, l(1.000000) +mad r1.w, r2.w, r1.w, r3.x +mul r3.xy, r4.xxxx, r5.xyxx +round_ne r3.xy, r3.xyxx +mad r3.xy, r3.xyxx, cb0[1].xyxx, r1.xyxx +mov r3.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r3.xyzx, t0.yzxw, s0, l(0.000000) +mad r3.xy, cb0[2].xyxx, r3.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r3.xyxx +add r3.xyz, -r2.xyzx, r4.xyzx +dp3 r2.w, r3.xyzx, r3.xyzx +dp3 r3.x, r0.xywx, r3.xyzx +rsq r3.y, r2.w +mad_sat r3.x, r3.x, r3.y, -cb0[3].w +mad_sat r2.w, r2.w, cb0[3].z, l(1.000000) +mad r1.w, r3.x, r2.w, r1.w +mul r3.xy, r0.zzzz, r5.xyxx +round_ne r3.xy, r3.xyxx +mad r3.xy, r3.xyxx, cb0[1].xyxx, r1.xyxx +mov r3.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r3.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.xy, cb0[2].xyxx, r3.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r1.xyxx +add r2.xyz, -r2.xyzx, r4.xyzx +dp3 r0.z, r2.xyzx, r2.xyzx +dp3 r0.x, r0.xywx, r2.xyzx +rsq r0.y, r0.z +mad_sat r0.x, r0.x, r0.y, -cb0[3].w +mad_sat r0.y, r0.z, cb0[3].z, l(1.000000) +mad r0.x, r0.x, r0.y, r1.w +mul r0.x, r0.x, cb0[4].y +mad r0.x, r1.z, cb0[4].x, r0.x +mad_sat o0.x, -r0.x, l(0.062500), l(1.000000) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_0_D3D11[] = +{ + 68, 88, 66, 67, 170, 156, + 25, 236, 66, 121, 83, 36, + 148, 150, 92, 152, 76, 6, + 212, 60, 1, 0, 0, 0, + 204, 64, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 12, 64, 0, 0, + 80, 0, 0, 0, 3, 16, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 89, 0, + 0, 4, 70, 142, 32, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 64, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 88, 24, 0, 4, 0, 112, + 16, 0, 1, 0, 0, 0, + 85, 85, 0, 0, 100, 32, + 0, 4, 50, 16, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 7, 0, 0, 0, 65, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 13, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 64, 0, 0, + 128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 56, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 62, 0, 0, + 128, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 49, 0, 0, 7, 130, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 31, 0, + 4, 3, 58, 0, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 18, 32, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 62, 0, 0, 1, 21, 0, + 0, 1, 50, 0, 0, 11, + 194, 0, 16, 0, 1, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 1, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 2, 0, 0, 0, 166, 10, + 16, 0, 2, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 27, 0, 0, 5, + 50, 0, 16, 0, 3, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 8, 194, 0, 16, 0, + 3, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 45, 0, 0, 137, 194, 0, + 0, 128, 67, 85, 21, 0, + 178, 0, 16, 0, 0, 0, + 0, 0, 70, 14, 16, 0, + 3, 0, 0, 0, 70, 123, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 15, 178, 0, + 16, 0, 0, 0, 0, 0, + 70, 12, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 64, 0, 0, + 0, 64, 0, 0, 0, 0, + 0, 0, 0, 64, 2, 64, + 0, 0, 0, 0, 128, 191, + 0, 0, 128, 191, 0, 0, + 0, 0, 0, 0, 128, 191, + 56, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 50, 0, + 0, 10, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 8, + 50, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 42, 0, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 130, 0, + 16, 0, 2, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 8, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 1, 0, 0, 0, + 6, 129, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 6, 1, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 18, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 58, 0, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 8, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 5, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 50, 0, 0, 9, + 66, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 10, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 8, 194, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 132, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 3, 0, + 0, 0, 166, 14, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 3, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 166, 11, 16, 0, 3, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 34, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 11, + 194, 0, 16, 0, 3, 0, + 0, 0, 6, 132, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 243, 4, 53, 63, + 243, 4, 53, 63, 50, 0, + 0, 11, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 243, 4, 53, 63, + 58, 0, 16, 128, 65, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 7, 34, 0, + 16, 0, 5, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 5, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 166, 11, 16, 0, 5, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 5, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 5, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 5, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 2, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 5, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 4, 0, + 0, 0, 166, 11, 16, 0, + 5, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 18, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 0, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 5, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 166, 11, 16, 0, 5, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 5, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 4, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 12, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 34, 0, + 16, 0, 5, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 5, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 4, 0, 0, 0, 166, 11, + 16, 0, 5, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 5, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 4, 0, + 0, 0, 166, 11, 16, 0, + 5, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 0, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 5, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 166, 11, 16, 0, 5, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 5, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 4, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 11, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 243, 4, + 53, 191, 58, 0, 16, 128, + 65, 0, 0, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 34, 0, 16, 0, 5, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 191, 42, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 6, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 6, 0, 16, 0, + 4, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 13, 18, 0, 16, 0, + 5, 0, 0, 0, 26, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 187, 179, 10, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 12, + 34, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 187, 179, 26, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 6, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 6, 0, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 8, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 245, 4, + 53, 191, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 241, 4, 53, 191, 26, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 15, 0, + 0, 11, 34, 0, 16, 0, + 5, 0, 0, 0, 22, 133, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 241, 4, 53, 191, + 245, 4, 53, 191, 0, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 6, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 6, 0, 16, 0, + 4, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 11, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 222, 76, 50, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 12, 34, 0, + 16, 0, 5, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 222, + 76, 50, 10, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 6, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 6, 0, 16, 0, + 4, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 8, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 239, 4, 53, 191, + 50, 0, 0, 11, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 247, 4, + 53, 63, 26, 0, 16, 128, + 65, 0, 0, 0, 3, 0, + 0, 0, 15, 0, 0, 11, + 34, 0, 16, 0, 5, 0, + 0, 0, 22, 133, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 247, 4, 53, 63, 239, 4, + 53, 191, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 166, 10, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 2, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 2, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 130, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 3, 0, 0, 0, + 6, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 130, 0, + 16, 0, 2, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 3, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 3, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 1, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 34, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 8, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 128, + 32, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 18, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 50, 32, 0, 10, + 18, 32, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 61, 1, 64, + 0, 0, 0, 0, 128, 63, + 62, 0, 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[14], immediateIndexed +dcl_constantbuffer cb1[2], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2darray (float,float,float,float) t0 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 7 +round_ni r0.xy, v0.xyxx +mad r0.xy, r0.xyxx, l(4.000000, 4.000000, 0.000000, 0.000000), cb1[1].xyxx +mul r0.zw, r0.xxxy, cb0[1].xxxy +mul r1.xy, r0.zwzz, l(0.250000, 0.250000, 0.000000, 0.000000) +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r2.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +div r0.z, cb0[3].x, r2.z +lt r0.w, r0.z, l(1.000000) +if_nz r0.w + mov o0.x, l(1.000000) + ret +endif +mad r1.zw, cb0[2].xxxy, r1.xxxy, cb0[2].zzzw +mul r2.xy, r2.zzzz, r1.zwzz +add r0.xy, r0.xyxx, cb0[7].xyxx +ftoi r3.xy, r0.xyxx +mov r3.zw, l(0,0,0,0) +ld_indexable(texture2d)(float,float,float,float) r0.xyw, r3.xyzw, t1.xywz +mad r0.xyw, r0.xyxw, cb0[13].xxxx, cb0[13].yyyy +mul r3.xyz, r0.yyyy, cb0[10].xyzx +mad r3.xyz, r0.xxxx, cb0[9].xyzx, r3.xyzx +mad r0.xyw, r0.wwww, cb0[11].xyxz, r3.xyxz +dp3 r1.z, r0.xywx, r0.xywx +rsq r1.z, r1.z +mul r0.xyw, r0.xyxw, r1.zzzz +mul r1.z, r0.z, l(0.050000) +mad r1.z, cb1[0].z, r1.z, l(1.000000) +mul r3.xy, r1.zzzz, cb1[0].xyxx +round_ne r3.xy, r3.xyxx +mad r3.xy, r3.xyxx, cb0[1].xyxx, r1.xyxx +mov r3.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r3.xyzx, t0.yzxw, s0, l(0.000000) +mad r3.xy, cb0[2].xyxx, r3.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r3.xyxx +mad r1.w, r0.z, l(0.050000), r1.z +add r3.xyz, -r2.xyzx, r4.xyzx +dp3 r2.w, r3.xyzx, r3.xyzx +dp3 r3.x, r0.xywx, r3.xyzx +rsq r3.y, r2.w +mad_sat r3.x, r3.x, r3.y, -cb0[3].w +mad_sat r2.w, r2.w, cb0[3].z, l(1.000000) +mul r3.yz, r1.wwww, cb1[0].xxyx +round_ne r3.yz, r3.yyzy +mad r4.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r4.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r3.yz, r3.wwww, r4.xxyx +mad r4.x, r0.z, l(0.050000), r1.w +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mul r4.yz, r4.xxxx, cb1[0].xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +mad r0.z, r0.z, l(0.050000), r4.x +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.w, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.w +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.w, r3.w, cb0[3].z, l(1.000000) +mul r3.w, r3.w, r4.y +mad r3.y, r3.y, r3.z, r3.w +mul r3.zw, r0.zzzz, cb1[0].xxxy +round_ne r3.zw, r3.zzzw +mad r5.xy, r3.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r3.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r3.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.z, r4.yzwy, r4.yzwy +dp3 r3.w, r0.xywx, r4.yzwy +rsq r4.y, r3.z +mad_sat r3.w, r3.w, r4.y, -cb0[3].w +mad_sat r3.z, r3.z, cb0[3].z, l(1.000000) +mad r3.y, r3.w, r3.z, r3.y +mul r3.zw, cb1[0].xxxy, l(0.000000, 0.000000, 0.707107, 0.707107) +mad r5.x, cb1[0].x, l(0.707107), -r3.w +add r5.y, r3.z, r3.w +mul r4.yz, r1.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r5.z, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r5.z +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.z, cb0[3].z, l(1.000000) +mul r4.y, r4.z, r4.y +mad r2.w, r3.x, r2.w, r4.y +mul r4.yz, r1.wwww, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.x, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.x, r3.x, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.x, r3.y +mul r4.yz, r4.xxxx, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mul r4.yz, r0.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mad r5.x, cb1[0].x, l(-0.000000), -cb1[0].y +mad r5.y, cb1[0].y, l(-0.000000), cb1[0].x +mul r4.yz, r1.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r2.w, r4.y, r3.y, r2.w +mul r4.yz, r1.wwww, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mul r4.yz, r4.xxxx, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mul r4.yz, r0.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mad r5.x, cb1[0].x, l(-0.707107), -r3.w +mad r5.y, cb1[0].y, l(-0.707107), r3.z +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r2.w, r3.y, r3.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r4.xxxx, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r0.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r5.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r5.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mad r5.x, -cb1[0].y, l(-0.000000), -cb1[0].x +mad r5.y, cb1[0].x, l(-0.000000), -cb1[0].y +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r2.w, r3.y, r3.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r4.xxxx, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r0.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r5.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r5.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.y, cb1[0].y, l(-0.707107) +mad r5.x, cb1[0].x, l(-0.707107), -r3.y +dp2 r5.y, cb1[0].yxyy, l(-0.707107, -0.707107, 0.000000, 0.000000) +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r2.w, r3.y, r3.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r4.xxxx, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r0.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r5.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r5.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mad r5.x, cb1[0].x, l(0.000000), cb1[0].y +mad r5.y, cb1[0].y, l(0.000000), -cb1[0].x +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r2.w, r3.y, r3.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r4.xxxx, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r0.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r5.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r5.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.y, cb1[0].y, l(-0.707107) +mad r5.x, cb1[0].x, l(0.707107), -r3.y +dp2 r5.y, cb1[0].yxyy, l(0.707107, -0.707107, 0.000000, 0.000000) +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r1.z, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r1.z +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r1.z, r1.z, cb0[3].z, l(1.000000) +mad r1.z, r3.y, r1.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r1.w, r3.yzwy, r3.yzwy +dp3 r2.w, r0.xywx, r3.yzwy +rsq r3.y, r1.w +mad_sat r2.w, r2.w, r3.y, -cb0[3].w +mad_sat r1.w, r1.w, cb0[3].z, l(1.000000) +mad r1.w, r2.w, r1.w, r3.x +mul r3.xy, r4.xxxx, r5.xyxx +round_ne r3.xy, r3.xyxx +mad r3.xy, r3.xyxx, cb0[1].xyxx, r1.xyxx +mov r3.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r3.xyzx, t0.yzxw, s0, l(0.000000) +mad r3.xy, cb0[2].xyxx, r3.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r3.xyxx +add r3.xyz, -r2.xyzx, r4.xyzx +dp3 r2.w, r3.xyzx, r3.xyzx +dp3 r3.x, r0.xywx, r3.xyzx +rsq r3.y, r2.w +mad_sat r3.x, r3.x, r3.y, -cb0[3].w +mad_sat r2.w, r2.w, cb0[3].z, l(1.000000) +mad r1.w, r3.x, r2.w, r1.w +mul r3.xy, r0.zzzz, r5.xyxx +round_ne r3.xy, r3.xyxx +mad r3.xy, r3.xyxx, cb0[1].xyxx, r1.xyxx +mov r3.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r3.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.xy, cb0[2].xyxx, r3.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r1.xyxx +add r2.xyz, -r2.xyzx, r4.xyzx +dp3 r0.z, r2.xyzx, r2.xyzx +dp3 r0.x, r0.xywx, r2.xyzx +rsq r0.y, r0.z +mad_sat r0.x, r0.x, r0.y, -cb0[3].w +mad_sat r0.y, r0.z, cb0[3].z, l(1.000000) +mad r0.x, r0.x, r0.y, r1.w +mul r0.x, r0.x, cb0[4].y +mad r0.x, r1.z, cb0[4].x, r0.x +mad_sat o0.x, -r0.x, l(0.062500), l(1.000000) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_1_D3D11[] = +{ + 68, 88, 66, 67, 127, 44, + 113, 98, 219, 162, 211, 77, + 66, 67, 221, 177, 63, 242, + 37, 220, 1, 0, 0, 0, + 152, 65, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 216, 64, 0, 0, + 80, 0, 0, 0, 54, 16, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 89, 0, + 0, 4, 70, 142, 32, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 64, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 88, 24, 0, 4, 0, 112, + 16, 0, 1, 0, 0, 0, + 85, 85, 0, 0, 100, 32, + 0, 4, 50, 16, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 7, 0, 0, 0, 65, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 13, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 64, 0, 0, + 128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 56, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 62, 0, 0, + 128, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 49, 0, 0, 7, 130, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 31, 0, + 4, 3, 58, 0, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 18, 32, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 62, 0, 0, 1, 21, 0, + 0, 1, 50, 0, 0, 11, + 194, 0, 16, 0, 1, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 1, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 2, 0, 0, 0, 166, 10, + 16, 0, 2, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 50, 0, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 27, 0, + 0, 5, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 54, 0, 0, 8, 194, 0, + 16, 0, 3, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 45, 0, 0, 137, + 194, 0, 0, 128, 67, 85, + 21, 0, 178, 0, 16, 0, + 0, 0, 0, 0, 70, 14, + 16, 0, 3, 0, 0, 0, + 70, 123, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 11, + 178, 0, 16, 0, 0, 0, + 0, 0, 70, 12, 16, 0, + 0, 0, 0, 0, 6, 128, + 32, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 86, 133, + 32, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 56, 0, + 0, 8, 114, 0, 16, 0, + 3, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 70, 130, 32, 0, 0, 0, + 0, 0, 10, 0, 0, 0, + 50, 0, 0, 10, 114, 0, + 16, 0, 3, 0, 0, 0, + 6, 0, 16, 0, 0, 0, + 0, 0, 70, 130, 32, 0, + 0, 0, 0, 0, 9, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 178, 0, 16, 0, + 0, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 70, 136, 32, 0, 0, 0, + 0, 0, 11, 0, 0, 0, + 70, 8, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 178, 0, 16, 0, 0, 0, + 0, 0, 70, 12, 16, 0, + 0, 0, 0, 0, 166, 10, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 50, 0, + 0, 10, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 8, + 50, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 42, 0, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 130, 0, + 16, 0, 2, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 8, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 1, 0, 0, 0, + 6, 129, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 6, 1, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 18, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 58, 0, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 8, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 5, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 50, 0, 0, 9, + 66, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 10, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 8, 194, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 132, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 3, 0, + 0, 0, 166, 14, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 3, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 166, 11, 16, 0, 3, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 34, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 11, + 194, 0, 16, 0, 3, 0, + 0, 0, 6, 132, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 243, 4, 53, 63, + 243, 4, 53, 63, 50, 0, + 0, 11, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 243, 4, 53, 63, + 58, 0, 16, 128, 65, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 7, 34, 0, + 16, 0, 5, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 5, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 166, 11, 16, 0, 5, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 5, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 5, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 5, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 2, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 5, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 4, 0, + 0, 0, 166, 11, 16, 0, + 5, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 18, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 0, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 5, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 166, 11, 16, 0, 5, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 5, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 4, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 12, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 34, 0, + 16, 0, 5, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 5, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 4, 0, 0, 0, 166, 11, + 16, 0, 5, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 5, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 4, 0, + 0, 0, 166, 11, 16, 0, + 5, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 0, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 5, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 166, 11, 16, 0, 5, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 5, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 4, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 11, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 243, 4, + 53, 191, 58, 0, 16, 128, + 65, 0, 0, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 34, 0, 16, 0, 5, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 191, 42, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 6, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 6, 0, 16, 0, + 4, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 13, 18, 0, 16, 0, + 5, 0, 0, 0, 26, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 187, 179, 10, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 12, + 34, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 187, 179, 26, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 6, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 6, 0, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 8, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 245, 4, + 53, 191, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 241, 4, 53, 191, 26, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 15, 0, + 0, 11, 34, 0, 16, 0, + 5, 0, 0, 0, 22, 133, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 241, 4, 53, 191, + 245, 4, 53, 191, 0, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 6, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 6, 0, 16, 0, + 4, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 11, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 222, 76, 50, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 12, 34, 0, + 16, 0, 5, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 222, + 76, 50, 10, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 6, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 6, 0, 16, 0, + 4, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 8, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 239, 4, 53, 191, + 50, 0, 0, 11, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 247, 4, + 53, 63, 26, 0, 16, 128, + 65, 0, 0, 0, 3, 0, + 0, 0, 15, 0, 0, 11, + 34, 0, 16, 0, 5, 0, + 0, 0, 22, 133, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 247, 4, 53, 63, 239, 4, + 53, 191, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 166, 10, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 2, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 2, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 130, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 3, 0, 0, 0, + 6, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 130, 0, + 16, 0, 2, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 3, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 3, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 1, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 34, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 8, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 128, + 32, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 18, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 50, 32, 0, 10, + 18, 32, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 61, 1, 64, + 0, 0, 0, 0, 128, 63, + 62, 0, 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[14], immediateIndexed +dcl_constantbuffer cb1[2], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2darray (float,float,float,float) t0 +dcl_resource_texture2dms(0) (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 7 +round_ni r0.xy, v0.xyxx +mad r0.xy, r0.xyxx, l(4.000000, 4.000000, 0.000000, 0.000000), cb1[1].xyxx +mul r0.zw, r0.xxxy, cb0[1].xxxy +mul r1.xy, r0.zwzz, l(0.250000, 0.250000, 0.000000, 0.000000) +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r2.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +div r0.z, cb0[3].x, r2.z +lt r0.w, r0.z, l(1.000000) +if_nz r0.w + mov o0.x, l(1.000000) + ret +endif +mad r1.zw, cb0[2].xxxy, r1.xxxy, cb0[2].zzzw +mul r2.xy, r2.zzzz, r1.zwzz +add r0.xy, r0.xyxx, cb0[7].xyxx +ftoi r3.xy, r0.xyxx +mov r3.zw, l(0,0,0,0) +ldms_indexable(texture2dms)(float,float,float,float) r0.xyw, r3.xyzw, t1.xywz, l(0) +mad r0.xyw, r0.xyxw, cb0[13].xxxx, cb0[13].yyyy +mul r3.xyz, r0.yyyy, cb0[10].xyzx +mad r3.xyz, r0.xxxx, cb0[9].xyzx, r3.xyzx +mad r0.xyw, r0.wwww, cb0[11].xyxz, r3.xyxz +dp3 r1.z, r0.xywx, r0.xywx +rsq r1.z, r1.z +mul r0.xyw, r0.xyxw, r1.zzzz +mul r1.z, r0.z, l(0.050000) +mad r1.z, cb1[0].z, r1.z, l(1.000000) +mul r3.xy, r1.zzzz, cb1[0].xyxx +round_ne r3.xy, r3.xyxx +mad r3.xy, r3.xyxx, cb0[1].xyxx, r1.xyxx +mov r3.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r3.xyzx, t0.yzxw, s0, l(0.000000) +mad r3.xy, cb0[2].xyxx, r3.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r3.xyxx +mad r1.w, r0.z, l(0.050000), r1.z +add r3.xyz, -r2.xyzx, r4.xyzx +dp3 r2.w, r3.xyzx, r3.xyzx +dp3 r3.x, r0.xywx, r3.xyzx +rsq r3.y, r2.w +mad_sat r3.x, r3.x, r3.y, -cb0[3].w +mad_sat r2.w, r2.w, cb0[3].z, l(1.000000) +mul r3.yz, r1.wwww, cb1[0].xxyx +round_ne r3.yz, r3.yyzy +mad r4.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r4.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r3.yz, r3.wwww, r4.xxyx +mad r4.x, r0.z, l(0.050000), r1.w +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mul r4.yz, r4.xxxx, cb1[0].xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +mad r0.z, r0.z, l(0.050000), r4.x +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.w, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.w +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.w, r3.w, cb0[3].z, l(1.000000) +mul r3.w, r3.w, r4.y +mad r3.y, r3.y, r3.z, r3.w +mul r3.zw, r0.zzzz, cb1[0].xxxy +round_ne r3.zw, r3.zzzw +mad r5.xy, r3.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r3.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r3.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.z, r4.yzwy, r4.yzwy +dp3 r3.w, r0.xywx, r4.yzwy +rsq r4.y, r3.z +mad_sat r3.w, r3.w, r4.y, -cb0[3].w +mad_sat r3.z, r3.z, cb0[3].z, l(1.000000) +mad r3.y, r3.w, r3.z, r3.y +mul r3.zw, cb1[0].xxxy, l(0.000000, 0.000000, 0.707107, 0.707107) +mad r5.x, cb1[0].x, l(0.707107), -r3.w +add r5.y, r3.z, r3.w +mul r4.yz, r1.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r5.z, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r5.z +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.z, cb0[3].z, l(1.000000) +mul r4.y, r4.z, r4.y +mad r2.w, r3.x, r2.w, r4.y +mul r4.yz, r1.wwww, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.x, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.x, r3.x, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.x, r3.y +mul r4.yz, r4.xxxx, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mul r4.yz, r0.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mad r5.x, cb1[0].x, l(-0.000000), -cb1[0].y +mad r5.y, cb1[0].y, l(-0.000000), cb1[0].x +mul r4.yz, r1.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r2.w, r4.y, r3.y, r2.w +mul r4.yz, r1.wwww, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mul r4.yz, r4.xxxx, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mul r4.yz, r0.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mad r5.x, cb1[0].x, l(-0.707107), -r3.w +mad r5.y, cb1[0].y, l(-0.707107), r3.z +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r2.w, r3.y, r3.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r4.xxxx, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r0.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r5.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r5.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mad r5.x, -cb1[0].y, l(-0.000000), -cb1[0].x +mad r5.y, cb1[0].x, l(-0.000000), -cb1[0].y +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r2.w, r3.y, r3.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r4.xxxx, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r0.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r5.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r5.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.y, cb1[0].y, l(-0.707107) +mad r5.x, cb1[0].x, l(-0.707107), -r3.y +dp2 r5.y, cb1[0].yxyy, l(-0.707107, -0.707107, 0.000000, 0.000000) +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r2.w, r3.y, r3.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r4.xxxx, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r0.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r5.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r5.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mad r5.x, cb1[0].x, l(0.000000), cb1[0].y +mad r5.y, cb1[0].y, l(0.000000), -cb1[0].x +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r2.w, r3.y, r3.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r4.xxxx, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r0.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r5.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r5.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.y, cb1[0].y, l(-0.707107) +mad r5.x, cb1[0].x, l(0.707107), -r3.y +dp2 r5.y, cb1[0].yxyy, l(0.707107, -0.707107, 0.000000, 0.000000) +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r1.z, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r1.z +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r1.z, r1.z, cb0[3].z, l(1.000000) +mad r1.z, r3.y, r1.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r1.w, r3.yzwy, r3.yzwy +dp3 r2.w, r0.xywx, r3.yzwy +rsq r3.y, r1.w +mad_sat r2.w, r2.w, r3.y, -cb0[3].w +mad_sat r1.w, r1.w, cb0[3].z, l(1.000000) +mad r1.w, r2.w, r1.w, r3.x +mul r3.xy, r4.xxxx, r5.xyxx +round_ne r3.xy, r3.xyxx +mad r3.xy, r3.xyxx, cb0[1].xyxx, r1.xyxx +mov r3.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r3.xyzx, t0.yzxw, s0, l(0.000000) +mad r3.xy, cb0[2].xyxx, r3.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r3.xyxx +add r3.xyz, -r2.xyzx, r4.xyzx +dp3 r2.w, r3.xyzx, r3.xyzx +dp3 r3.x, r0.xywx, r3.xyzx +rsq r3.y, r2.w +mad_sat r3.x, r3.x, r3.y, -cb0[3].w +mad_sat r2.w, r2.w, cb0[3].z, l(1.000000) +mad r1.w, r3.x, r2.w, r1.w +mul r3.xy, r0.zzzz, r5.xyxx +round_ne r3.xy, r3.xyxx +mad r3.xy, r3.xyxx, cb0[1].xyxx, r1.xyxx +mov r3.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r3.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.xy, cb0[2].xyxx, r3.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r1.xyxx +add r2.xyz, -r2.xyzx, r4.xyzx +dp3 r0.z, r2.xyzx, r2.xyzx +dp3 r0.x, r0.xywx, r2.xyzx +rsq r0.y, r0.z +mad_sat r0.x, r0.x, r0.y, -cb0[3].w +mad_sat r0.y, r0.z, cb0[3].z, l(1.000000) +mad r0.x, r0.x, r0.y, r1.w +mul r0.x, r0.x, cb0[4].y +mad r0.x, r1.z, cb0[4].x, r0.x +mad_sat o0.x, -r0.x, l(0.062500), l(1.000000) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_2_D3D11[] = +{ + 68, 88, 66, 67, 86, 176, + 43, 208, 0, 15, 208, 103, + 247, 58, 46, 24, 65, 219, + 133, 194, 1, 0, 0, 0, + 160, 65, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 224, 64, 0, 0, + 80, 0, 0, 0, 56, 16, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 89, 0, + 0, 4, 70, 142, 32, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 64, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 88, 32, 0, 4, 0, 112, + 16, 0, 1, 0, 0, 0, + 85, 85, 0, 0, 100, 32, + 0, 4, 50, 16, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 7, 0, 0, 0, 65, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 13, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 64, 0, 0, + 128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 56, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 62, 0, 0, + 128, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 49, 0, 0, 7, 130, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 31, 0, + 4, 3, 58, 0, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 18, 32, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 62, 0, 0, 1, 21, 0, + 0, 1, 50, 0, 0, 11, + 194, 0, 16, 0, 1, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 1, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 2, 0, 0, 0, 166, 10, + 16, 0, 2, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 50, 0, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 27, 0, + 0, 5, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 54, 0, 0, 8, 194, 0, + 16, 0, 3, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 46, 0, 0, 139, + 2, 1, 0, 128, 67, 85, + 21, 0, 178, 0, 16, 0, + 0, 0, 0, 0, 70, 14, + 16, 0, 3, 0, 0, 0, + 70, 123, 16, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 178, 0, 16, 0, + 0, 0, 0, 0, 70, 12, + 16, 0, 0, 0, 0, 0, + 6, 128, 32, 0, 0, 0, + 0, 0, 13, 0, 0, 0, + 86, 133, 32, 0, 0, 0, + 0, 0, 13, 0, 0, 0, + 56, 0, 0, 8, 114, 0, + 16, 0, 3, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 70, 130, 32, 0, + 0, 0, 0, 0, 10, 0, + 0, 0, 50, 0, 0, 10, + 114, 0, 16, 0, 3, 0, + 0, 0, 6, 0, 16, 0, + 0, 0, 0, 0, 70, 130, + 32, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 178, 0, + 16, 0, 0, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 70, 136, 32, 0, + 0, 0, 0, 0, 11, 0, + 0, 0, 70, 8, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 178, 0, 16, 0, + 0, 0, 0, 0, 70, 12, + 16, 0, 0, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 50, 0, 0, 10, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 8, 50, 0, 16, 0, + 3, 0, 0, 0, 166, 10, + 16, 0, 1, 0, 0, 0, + 70, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 3, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 3, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 42, 0, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 130, 0, 16, 0, 2, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 8, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 6, 129, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 6, 1, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 18, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 58, 0, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 8, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 5, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 4, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 50, 0, + 0, 9, 66, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 10, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 8, + 194, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 132, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 3, 0, 0, 0, 166, 14, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 3, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 4, 0, + 0, 0, 166, 11, 16, 0, + 3, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 34, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 11, 194, 0, 16, 0, + 3, 0, 0, 0, 6, 132, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 243, 4, + 53, 63, 243, 4, 53, 63, + 50, 0, 0, 11, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 243, 4, + 53, 63, 58, 0, 16, 128, + 65, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 7, + 34, 0, 16, 0, 5, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 5, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 4, 0, + 0, 0, 166, 11, 16, 0, + 5, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 5, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 5, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 130, 0, 16, 0, 2, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 5, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 4, 0, 0, 0, 166, 11, + 16, 0, 5, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 18, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 0, 16, 0, 4, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 5, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 4, 0, + 0, 0, 166, 11, 16, 0, + 5, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 5, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 12, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 59, 179, 26, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 34, 0, 16, 0, 5, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 59, 179, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 5, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 166, 11, 16, 0, 5, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 2, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 5, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 4, 0, 0, 0, 166, 11, + 16, 0, 5, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 0, 16, 0, 4, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 5, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 4, 0, + 0, 0, 166, 11, 16, 0, + 5, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 5, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 191, 58, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 5, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 243, 4, 53, 191, + 42, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 6, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 6, 0, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 13, 18, 0, + 16, 0, 5, 0, 0, 0, + 26, 128, 32, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 189, 187, 179, + 10, 128, 32, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 12, 34, 0, 16, 0, + 5, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 189, 187, 179, + 26, 128, 32, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 166, 10, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 2, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 6, 0, 16, 0, 4, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 6, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 8, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 245, 4, 53, 191, 50, 0, + 0, 11, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 241, 4, 53, 191, + 26, 0, 16, 128, 65, 0, + 0, 0, 3, 0, 0, 0, + 15, 0, 0, 11, 34, 0, + 16, 0, 5, 0, 0, 0, + 22, 133, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 241, 4, + 53, 191, 245, 4, 53, 191, + 0, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 6, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 6, 0, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 11, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 222, + 76, 50, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 12, + 34, 0, 16, 0, 5, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 222, 76, 50, 10, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 6, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 6, 0, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 8, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 239, 4, + 53, 191, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 247, 4, 53, 63, 26, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 15, 0, + 0, 11, 34, 0, 16, 0, + 5, 0, 0, 0, 22, 133, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 247, 4, 53, 63, + 239, 4, 53, 191, 0, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 6, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 1, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 2, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 2, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 130, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 3, 0, + 0, 0, 6, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 3, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 3, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 130, 0, 16, 0, 2, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 26, 128, 32, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 18, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 10, 128, 32, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 50, 32, + 0, 10, 18, 32, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 61, + 1, 64, 0, 0, 0, 0, + 128, 63, 62, 0, 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[8], immediateIndexed +dcl_constantbuffer cb1[2], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2darray (float,float,float,float) t0 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 7 +round_ni r0.xy, v0.xyxx +mad r0.xy, r0.xyxx, l(4.000000, 4.000000, 0.000000, 0.000000), cb1[1].xyxx +mul r0.zw, r0.xxxy, cb0[1].xxxy +mul r1.xy, r0.zwzz, l(0.250000, 0.250000, 0.000000, 0.000000) +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r2.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +div r0.z, cb0[3].x, r2.z +lt r0.w, r0.z, l(1.000000) +if_nz r0.w + mov o0.x, l(1.000000) + ret +endif +mad r1.zw, cb0[2].xxxy, r1.xxxy, cb0[2].zzzw +mul r2.xy, r2.zzzz, r1.zwzz +ftoi r3.xy, r0.xyxx +mov r3.zw, l(0,0,0,0) +ld_indexable(texture2d)(float,float,float,float) r0.xyw, r3.xyzw, t1.xywz +mad r0.xyw, r0.xyxw, l(2.000000, 2.000000, 0.000000, 2.000000), l(-1.000000, -1.000000, 0.000000, -1.000000) +mul r1.z, r0.z, l(0.050000) +mad r1.z, cb1[0].z, r1.z, l(1.000000) +mul r3.xy, r1.zzzz, cb1[0].xyxx +round_ne r3.xy, r3.xyxx +mad r3.xy, r3.xyxx, cb0[1].xyxx, r1.xyxx +mov r3.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r3.xyzx, t0.yzxw, s0, l(0.000000) +mad r3.xy, cb0[2].xyxx, r3.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r3.xyxx +mad r1.w, r0.z, l(0.050000), r1.z +add r3.xyz, -r2.xyzx, r4.xyzx +dp3 r2.w, r3.xyzx, r3.xyzx +dp3 r3.x, r0.xywx, r3.xyzx +rsq r3.y, r2.w +mad_sat r3.x, r3.x, r3.y, -cb0[3].w +mad_sat r2.w, r2.w, cb0[3].z, l(1.000000) +mul r3.yz, r1.wwww, cb1[0].xxyx +round_ne r3.yz, r3.yyzy +mad r4.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r4.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r3.yz, r3.wwww, r4.xxyx +mad r4.x, r0.z, l(0.050000), r1.w +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mul r4.yz, r4.xxxx, cb1[0].xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +mad r0.z, r0.z, l(0.050000), r4.x +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.w, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.w +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.w, r3.w, cb0[3].z, l(1.000000) +mul r3.w, r3.w, r4.y +mad r3.y, r3.y, r3.z, r3.w +mul r3.zw, r0.zzzz, cb1[0].xxxy +round_ne r3.zw, r3.zzzw +mad r5.xy, r3.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r3.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r3.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.z, r4.yzwy, r4.yzwy +dp3 r3.w, r0.xywx, r4.yzwy +rsq r4.y, r3.z +mad_sat r3.w, r3.w, r4.y, -cb0[3].w +mad_sat r3.z, r3.z, cb0[3].z, l(1.000000) +mad r3.y, r3.w, r3.z, r3.y +mul r3.zw, cb1[0].xxxy, l(0.000000, 0.000000, 0.707107, 0.707107) +mad r5.x, cb1[0].x, l(0.707107), -r3.w +add r5.y, r3.z, r3.w +mul r4.yz, r1.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r5.z, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r5.z +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.z, cb0[3].z, l(1.000000) +mul r4.y, r4.z, r4.y +mad r2.w, r3.x, r2.w, r4.y +mul r4.yz, r1.wwww, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.x, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.x, r3.x, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.x, r3.y +mul r4.yz, r4.xxxx, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mul r4.yz, r0.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mad r5.x, cb1[0].x, l(-0.000000), -cb1[0].y +mad r5.y, cb1[0].y, l(-0.000000), cb1[0].x +mul r4.yz, r1.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r2.w, r4.y, r3.y, r2.w +mul r4.yz, r1.wwww, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mul r4.yz, r4.xxxx, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mul r4.yz, r0.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mad r5.x, cb1[0].x, l(-0.707107), -r3.w +mad r5.y, cb1[0].y, l(-0.707107), r3.z +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r2.w, r3.y, r3.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r4.xxxx, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r0.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r5.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r5.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mad r5.x, -cb1[0].y, l(-0.000000), -cb1[0].x +mad r5.y, cb1[0].x, l(-0.000000), -cb1[0].y +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r2.w, r3.y, r3.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r4.xxxx, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r0.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r5.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r5.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.y, cb1[0].y, l(-0.707107) +mad r5.x, cb1[0].x, l(-0.707107), -r3.y +dp2 r5.y, cb1[0].yxyy, l(-0.707107, -0.707107, 0.000000, 0.000000) +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r2.w, r3.y, r3.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r4.xxxx, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r0.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r5.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r5.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mad r5.x, cb1[0].x, l(0.000000), cb1[0].y +mad r5.y, cb1[0].y, l(0.000000), -cb1[0].x +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r2.w, r3.y, r3.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r4.xxxx, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r0.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r5.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r5.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.y, cb1[0].y, l(-0.707107) +mad r5.x, cb1[0].x, l(0.707107), -r3.y +dp2 r5.y, cb1[0].yxyy, l(0.707107, -0.707107, 0.000000, 0.000000) +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r1.z, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r1.z +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r1.z, r1.z, cb0[3].z, l(1.000000) +mad r1.z, r3.y, r1.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r1.w, r3.yzwy, r3.yzwy +dp3 r2.w, r0.xywx, r3.yzwy +rsq r3.y, r1.w +mad_sat r2.w, r2.w, r3.y, -cb0[3].w +mad_sat r1.w, r1.w, cb0[3].z, l(1.000000) +mad r1.w, r2.w, r1.w, r3.x +mul r3.xy, r4.xxxx, r5.xyxx +round_ne r3.xy, r3.xyxx +mad r3.xy, r3.xyxx, cb0[1].xyxx, r1.xyxx +mov r3.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r3.xyzx, t0.yzxw, s0, l(0.000000) +mad r3.xy, cb0[2].xyxx, r3.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r3.xyxx +add r3.xyz, -r2.xyzx, r4.xyzx +dp3 r2.w, r3.xyzx, r3.xyzx +dp3 r3.x, r0.xywx, r3.xyzx +rsq r3.y, r2.w +mad_sat r3.x, r3.x, r3.y, -cb0[3].w +mad_sat r2.w, r2.w, cb0[3].z, l(1.000000) +mad r1.w, r3.x, r2.w, r1.w +mul r3.xy, r0.zzzz, r5.xyxx +round_ne r3.xy, r3.xyxx +mad r3.xy, r3.xyxx, cb0[1].xyxx, r1.xyxx +mov r3.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r3.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.xy, cb0[2].xyxx, r3.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r1.xyxx +add r2.xyw, -r2.xyxz, r4.xyxz +dp3 r0.z, r2.xywx, r2.xywx +dp3 r0.x, r0.xywx, r2.xywx +rsq r0.y, r0.z +mad_sat r0.x, r0.x, r0.y, -cb0[3].w +mad_sat r0.y, r0.z, cb0[3].z, l(1.000000) +mad r0.x, r0.x, r0.y, r1.w +mul r0.x, r0.x, cb0[4].y +mad r0.x, r1.z, cb0[4].x, r0.x +mul r0.x, r0.x, l(0.031250) +mad r0.y, r2.z, cb0[7].z, l(1.000000) +mul_sat r0.y, r0.y, cb0[7].w +dp2 r0.x, r0.xxxx, r0.yyyy +add_sat o0.x, -r0.x, l(1.000000) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_0_D3D11[] = +{ + 68, 88, 66, 67, 86, 58, + 81, 128, 210, 23, 159, 108, + 25, 237, 204, 127, 121, 204, + 62, 28, 1, 0, 0, 0, + 68, 65, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 132, 64, 0, 0, + 80, 0, 0, 0, 33, 16, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 89, 0, + 0, 4, 70, 142, 32, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 64, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 88, 24, 0, 4, 0, 112, + 16, 0, 1, 0, 0, 0, + 85, 85, 0, 0, 100, 32, + 0, 4, 50, 16, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 7, 0, 0, 0, 65, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 13, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 64, 0, 0, + 128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 56, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 62, 0, 0, + 128, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 49, 0, 0, 7, 130, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 31, 0, + 4, 3, 58, 0, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 18, 32, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 62, 0, 0, 1, 21, 0, + 0, 1, 50, 0, 0, 11, + 194, 0, 16, 0, 1, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 1, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 2, 0, 0, 0, 166, 10, + 16, 0, 2, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 27, 0, 0, 5, + 50, 0, 16, 0, 3, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 8, 194, 0, 16, 0, + 3, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 45, 0, 0, 137, 194, 0, + 0, 128, 67, 85, 21, 0, + 178, 0, 16, 0, 0, 0, + 0, 0, 70, 14, 16, 0, + 3, 0, 0, 0, 70, 123, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 15, 178, 0, + 16, 0, 0, 0, 0, 0, + 70, 12, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 64, 0, 0, + 0, 64, 0, 0, 0, 0, + 0, 0, 0, 64, 2, 64, + 0, 0, 0, 0, 128, 191, + 0, 0, 128, 191, 0, 0, + 0, 0, 0, 0, 128, 191, + 56, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 50, 0, + 0, 10, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 8, + 50, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 42, 0, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 130, 0, + 16, 0, 2, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 8, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 1, 0, 0, 0, + 6, 129, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 6, 1, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 18, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 58, 0, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 8, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 5, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 50, 0, 0, 9, + 66, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 10, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 8, 194, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 132, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 3, 0, + 0, 0, 166, 14, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 3, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 166, 11, 16, 0, 3, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 34, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 11, + 194, 0, 16, 0, 3, 0, + 0, 0, 6, 132, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 243, 4, 53, 63, + 243, 4, 53, 63, 50, 0, + 0, 11, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 243, 4, 53, 63, + 58, 0, 16, 128, 65, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 7, 34, 0, + 16, 0, 5, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 5, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 166, 11, 16, 0, 5, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 5, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 5, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 5, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 2, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 5, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 4, 0, + 0, 0, 166, 11, 16, 0, + 5, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 18, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 0, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 5, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 166, 11, 16, 0, 5, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 5, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 4, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 12, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 34, 0, + 16, 0, 5, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 5, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 4, 0, 0, 0, 166, 11, + 16, 0, 5, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 5, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 4, 0, + 0, 0, 166, 11, 16, 0, + 5, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 0, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 5, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 166, 11, 16, 0, 5, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 5, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 4, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 11, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 243, 4, + 53, 191, 58, 0, 16, 128, + 65, 0, 0, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 34, 0, 16, 0, 5, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 191, 42, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 6, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 6, 0, 16, 0, + 4, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 13, 18, 0, 16, 0, + 5, 0, 0, 0, 26, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 187, 179, 10, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 12, + 34, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 187, 179, 26, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 6, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 6, 0, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 8, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 245, 4, + 53, 191, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 241, 4, 53, 191, 26, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 15, 0, + 0, 11, 34, 0, 16, 0, + 5, 0, 0, 0, 22, 133, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 241, 4, 53, 191, + 245, 4, 53, 191, 0, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 6, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 6, 0, 16, 0, + 4, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 11, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 222, 76, 50, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 12, 34, 0, + 16, 0, 5, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 222, + 76, 50, 10, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 6, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 6, 0, 16, 0, + 4, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 8, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 239, 4, 53, 191, + 50, 0, 0, 11, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 247, 4, + 53, 63, 26, 0, 16, 128, + 65, 0, 0, 0, 3, 0, + 0, 0, 15, 0, 0, 11, + 34, 0, 16, 0, 5, 0, + 0, 0, 22, 133, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 247, 4, 53, 63, 239, 4, + 53, 191, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 166, 10, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 2, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 2, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 130, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 3, 0, 0, 0, + 6, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 130, 0, + 16, 0, 2, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 3, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 3, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 1, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 178, 0, 16, 0, 2, 0, + 0, 0, 70, 8, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 8, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 0, 0, 0, 0, 70, 3, + 16, 0, 2, 0, 0, 0, + 70, 3, 16, 0, 2, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 70, 3, + 16, 0, 2, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 34, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 8, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 128, + 32, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 18, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 61, + 50, 0, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 2, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 7, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 32, + 0, 8, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 58, 128, 32, 0, 0, 0, + 0, 0, 7, 0, 0, 0, + 15, 0, 0, 7, 18, 0, + 16, 0, 0, 0, 0, 0, + 6, 0, 16, 0, 0, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 0, 32, + 0, 8, 18, 32, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 62, 0, 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[14], immediateIndexed +dcl_constantbuffer cb1[2], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2darray (float,float,float,float) t0 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 7 +round_ni r0.xy, v0.xyxx +mad r0.xy, r0.xyxx, l(4.000000, 4.000000, 0.000000, 0.000000), cb1[1].xyxx +mul r0.zw, r0.xxxy, cb0[1].xxxy +mul r1.xy, r0.zwzz, l(0.250000, 0.250000, 0.000000, 0.000000) +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r2.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +div r0.z, cb0[3].x, r2.z +lt r0.w, r0.z, l(1.000000) +if_nz r0.w + mov o0.x, l(1.000000) + ret +endif +mad r1.zw, cb0[2].xxxy, r1.xxxy, cb0[2].zzzw +mul r2.xy, r2.zzzz, r1.zwzz +add r0.xy, r0.xyxx, cb0[7].xyxx +ftoi r3.xy, r0.xyxx +mov r3.zw, l(0,0,0,0) +ld_indexable(texture2d)(float,float,float,float) r0.xyw, r3.xyzw, t1.xywz +mad r0.xyw, r0.xyxw, cb0[13].xxxx, cb0[13].yyyy +mul r3.xyz, r0.yyyy, cb0[10].xyzx +mad r3.xyz, r0.xxxx, cb0[9].xyzx, r3.xyzx +mad r0.xyw, r0.wwww, cb0[11].xyxz, r3.xyxz +dp3 r1.z, r0.xywx, r0.xywx +rsq r1.z, r1.z +mul r0.xyw, r0.xyxw, r1.zzzz +mul r1.z, r0.z, l(0.050000) +mad r1.z, cb1[0].z, r1.z, l(1.000000) +mul r3.xy, r1.zzzz, cb1[0].xyxx +round_ne r3.xy, r3.xyxx +mad r3.xy, r3.xyxx, cb0[1].xyxx, r1.xyxx +mov r3.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r3.xyzx, t0.yzxw, s0, l(0.000000) +mad r3.xy, cb0[2].xyxx, r3.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r3.xyxx +mad r1.w, r0.z, l(0.050000), r1.z +add r3.xyz, -r2.xyzx, r4.xyzx +dp3 r2.w, r3.xyzx, r3.xyzx +dp3 r3.x, r0.xywx, r3.xyzx +rsq r3.y, r2.w +mad_sat r3.x, r3.x, r3.y, -cb0[3].w +mad_sat r2.w, r2.w, cb0[3].z, l(1.000000) +mul r3.yz, r1.wwww, cb1[0].xxyx +round_ne r3.yz, r3.yyzy +mad r4.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r4.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r3.yz, r3.wwww, r4.xxyx +mad r4.x, r0.z, l(0.050000), r1.w +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mul r4.yz, r4.xxxx, cb1[0].xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +mad r0.z, r0.z, l(0.050000), r4.x +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.w, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.w +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.w, r3.w, cb0[3].z, l(1.000000) +mul r3.w, r3.w, r4.y +mad r3.y, r3.y, r3.z, r3.w +mul r3.zw, r0.zzzz, cb1[0].xxxy +round_ne r3.zw, r3.zzzw +mad r5.xy, r3.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r3.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r3.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.z, r4.yzwy, r4.yzwy +dp3 r3.w, r0.xywx, r4.yzwy +rsq r4.y, r3.z +mad_sat r3.w, r3.w, r4.y, -cb0[3].w +mad_sat r3.z, r3.z, cb0[3].z, l(1.000000) +mad r3.y, r3.w, r3.z, r3.y +mul r3.zw, cb1[0].xxxy, l(0.000000, 0.000000, 0.707107, 0.707107) +mad r5.x, cb1[0].x, l(0.707107), -r3.w +add r5.y, r3.z, r3.w +mul r4.yz, r1.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r5.z, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r5.z +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.z, cb0[3].z, l(1.000000) +mul r4.y, r4.z, r4.y +mad r2.w, r3.x, r2.w, r4.y +mul r4.yz, r1.wwww, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.x, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.x, r3.x, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.x, r3.y +mul r4.yz, r4.xxxx, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mul r4.yz, r0.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mad r5.x, cb1[0].x, l(-0.000000), -cb1[0].y +mad r5.y, cb1[0].y, l(-0.000000), cb1[0].x +mul r4.yz, r1.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r2.w, r4.y, r3.y, r2.w +mul r4.yz, r1.wwww, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mul r4.yz, r4.xxxx, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mul r4.yz, r0.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mad r5.x, cb1[0].x, l(-0.707107), -r3.w +mad r5.y, cb1[0].y, l(-0.707107), r3.z +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r2.w, r3.y, r3.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r4.xxxx, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r0.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r5.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r5.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mad r5.x, -cb1[0].y, l(-0.000000), -cb1[0].x +mad r5.y, cb1[0].x, l(-0.000000), -cb1[0].y +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r2.w, r3.y, r3.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r4.xxxx, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r0.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r5.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r5.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.y, cb1[0].y, l(-0.707107) +mad r5.x, cb1[0].x, l(-0.707107), -r3.y +dp2 r5.y, cb1[0].yxyy, l(-0.707107, -0.707107, 0.000000, 0.000000) +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r2.w, r3.y, r3.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r4.xxxx, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r0.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r5.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r5.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mad r5.x, cb1[0].x, l(0.000000), cb1[0].y +mad r5.y, cb1[0].y, l(0.000000), -cb1[0].x +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r2.w, r3.y, r3.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r4.xxxx, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r0.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r5.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r5.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.y, cb1[0].y, l(-0.707107) +mad r5.x, cb1[0].x, l(0.707107), -r3.y +dp2 r5.y, cb1[0].yxyy, l(0.707107, -0.707107, 0.000000, 0.000000) +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r1.z, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r1.z +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r1.z, r1.z, cb0[3].z, l(1.000000) +mad r1.z, r3.y, r1.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r1.w, r3.yzwy, r3.yzwy +dp3 r2.w, r0.xywx, r3.yzwy +rsq r3.y, r1.w +mad_sat r2.w, r2.w, r3.y, -cb0[3].w +mad_sat r1.w, r1.w, cb0[3].z, l(1.000000) +mad r1.w, r2.w, r1.w, r3.x +mul r3.xy, r4.xxxx, r5.xyxx +round_ne r3.xy, r3.xyxx +mad r3.xy, r3.xyxx, cb0[1].xyxx, r1.xyxx +mov r3.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r3.xyzx, t0.yzxw, s0, l(0.000000) +mad r3.xy, cb0[2].xyxx, r3.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r3.xyxx +add r3.xyz, -r2.xyzx, r4.xyzx +dp3 r2.w, r3.xyzx, r3.xyzx +dp3 r3.x, r0.xywx, r3.xyzx +rsq r3.y, r2.w +mad_sat r3.x, r3.x, r3.y, -cb0[3].w +mad_sat r2.w, r2.w, cb0[3].z, l(1.000000) +mad r1.w, r3.x, r2.w, r1.w +mul r3.xy, r0.zzzz, r5.xyxx +round_ne r3.xy, r3.xyxx +mad r3.xy, r3.xyxx, cb0[1].xyxx, r1.xyxx +mov r3.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r3.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.xy, cb0[2].xyxx, r3.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r1.xyxx +add r2.xyw, -r2.xyxz, r4.xyxz +dp3 r0.z, r2.xywx, r2.xywx +dp3 r0.x, r0.xywx, r2.xywx +rsq r0.y, r0.z +mad_sat r0.x, r0.x, r0.y, -cb0[3].w +mad_sat r0.y, r0.z, cb0[3].z, l(1.000000) +mad r0.x, r0.x, r0.y, r1.w +mul r0.x, r0.x, cb0[4].y +mad r0.x, r1.z, cb0[4].x, r0.x +mul r0.x, r0.x, l(0.031250) +mad r0.y, r2.z, cb0[7].z, l(1.000000) +mul_sat r0.y, r0.y, cb0[7].w +dp2 r0.x, r0.xxxx, r0.yyyy +add_sat o0.x, -r0.x, l(1.000000) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_1_D3D11[] = +{ + 68, 88, 66, 67, 140, 12, + 104, 38, 33, 235, 94, 142, + 169, 23, 234, 208, 105, 180, + 190, 218, 1, 0, 0, 0, + 16, 66, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 80, 65, 0, 0, + 80, 0, 0, 0, 84, 16, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 89, 0, + 0, 4, 70, 142, 32, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 64, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 88, 24, 0, 4, 0, 112, + 16, 0, 1, 0, 0, 0, + 85, 85, 0, 0, 100, 32, + 0, 4, 50, 16, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 7, 0, 0, 0, 65, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 13, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 64, 0, 0, + 128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 56, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 62, 0, 0, + 128, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 49, 0, 0, 7, 130, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 31, 0, + 4, 3, 58, 0, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 18, 32, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 62, 0, 0, 1, 21, 0, + 0, 1, 50, 0, 0, 11, + 194, 0, 16, 0, 1, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 1, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 2, 0, 0, 0, 166, 10, + 16, 0, 2, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 50, 0, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 27, 0, + 0, 5, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 54, 0, 0, 8, 194, 0, + 16, 0, 3, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 45, 0, 0, 137, + 194, 0, 0, 128, 67, 85, + 21, 0, 178, 0, 16, 0, + 0, 0, 0, 0, 70, 14, + 16, 0, 3, 0, 0, 0, + 70, 123, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 11, + 178, 0, 16, 0, 0, 0, + 0, 0, 70, 12, 16, 0, + 0, 0, 0, 0, 6, 128, + 32, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 86, 133, + 32, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 56, 0, + 0, 8, 114, 0, 16, 0, + 3, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 70, 130, 32, 0, 0, 0, + 0, 0, 10, 0, 0, 0, + 50, 0, 0, 10, 114, 0, + 16, 0, 3, 0, 0, 0, + 6, 0, 16, 0, 0, 0, + 0, 0, 70, 130, 32, 0, + 0, 0, 0, 0, 9, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 178, 0, 16, 0, + 0, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 70, 136, 32, 0, 0, 0, + 0, 0, 11, 0, 0, 0, + 70, 8, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 178, 0, 16, 0, 0, 0, + 0, 0, 70, 12, 16, 0, + 0, 0, 0, 0, 166, 10, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 50, 0, + 0, 10, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 8, + 50, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 42, 0, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 130, 0, + 16, 0, 2, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 8, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 1, 0, 0, 0, + 6, 129, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 6, 1, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 18, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 58, 0, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 8, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 5, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 50, 0, 0, 9, + 66, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 10, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 8, 194, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 132, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 3, 0, + 0, 0, 166, 14, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 3, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 166, 11, 16, 0, 3, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 34, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 11, + 194, 0, 16, 0, 3, 0, + 0, 0, 6, 132, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 243, 4, 53, 63, + 243, 4, 53, 63, 50, 0, + 0, 11, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 243, 4, 53, 63, + 58, 0, 16, 128, 65, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 7, 34, 0, + 16, 0, 5, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 5, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 166, 11, 16, 0, 5, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 5, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 5, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 5, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 2, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 5, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 4, 0, + 0, 0, 166, 11, 16, 0, + 5, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 18, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 0, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 5, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 166, 11, 16, 0, 5, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 5, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 4, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 12, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 34, 0, + 16, 0, 5, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 5, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 4, 0, 0, 0, 166, 11, + 16, 0, 5, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 5, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 4, 0, + 0, 0, 166, 11, 16, 0, + 5, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 0, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 5, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 166, 11, 16, 0, 5, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 5, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 4, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 11, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 243, 4, + 53, 191, 58, 0, 16, 128, + 65, 0, 0, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 34, 0, 16, 0, 5, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 191, 42, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 6, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 6, 0, 16, 0, + 4, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 13, 18, 0, 16, 0, + 5, 0, 0, 0, 26, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 187, 179, 10, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 12, + 34, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 187, 179, 26, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 6, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 6, 0, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 8, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 245, 4, + 53, 191, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 241, 4, 53, 191, 26, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 15, 0, + 0, 11, 34, 0, 16, 0, + 5, 0, 0, 0, 22, 133, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 241, 4, 53, 191, + 245, 4, 53, 191, 0, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 6, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 6, 0, 16, 0, + 4, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 11, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 222, 76, 50, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 12, 34, 0, + 16, 0, 5, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 222, + 76, 50, 10, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 6, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 6, 0, 16, 0, + 4, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 8, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 239, 4, 53, 191, + 50, 0, 0, 11, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 247, 4, + 53, 63, 26, 0, 16, 128, + 65, 0, 0, 0, 3, 0, + 0, 0, 15, 0, 0, 11, + 34, 0, 16, 0, 5, 0, + 0, 0, 22, 133, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 247, 4, 53, 63, 239, 4, + 53, 191, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 166, 10, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 2, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 2, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 130, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 3, 0, 0, 0, + 6, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 130, 0, + 16, 0, 2, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 3, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 3, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 1, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 178, 0, 16, 0, 2, 0, + 0, 0, 70, 8, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 8, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 0, 0, 0, 0, 70, 3, + 16, 0, 2, 0, 0, 0, + 70, 3, 16, 0, 2, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 70, 3, + 16, 0, 2, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 34, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 8, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 128, + 32, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 18, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 61, + 50, 0, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 2, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 7, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 32, + 0, 8, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 58, 128, 32, 0, 0, 0, + 0, 0, 7, 0, 0, 0, + 15, 0, 0, 7, 18, 0, + 16, 0, 0, 0, 0, 0, + 6, 0, 16, 0, 0, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 0, 32, + 0, 8, 18, 32, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 62, 0, 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[14], immediateIndexed +dcl_constantbuffer cb1[2], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2darray (float,float,float,float) t0 +dcl_resource_texture2dms(0) (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 7 +round_ni r0.xy, v0.xyxx +mad r0.xy, r0.xyxx, l(4.000000, 4.000000, 0.000000, 0.000000), cb1[1].xyxx +mul r0.zw, r0.xxxy, cb0[1].xxxy +mul r1.xy, r0.zwzz, l(0.250000, 0.250000, 0.000000, 0.000000) +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r2.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +div r0.z, cb0[3].x, r2.z +lt r0.w, r0.z, l(1.000000) +if_nz r0.w + mov o0.x, l(1.000000) + ret +endif +mad r1.zw, cb0[2].xxxy, r1.xxxy, cb0[2].zzzw +mul r2.xy, r2.zzzz, r1.zwzz +add r0.xy, r0.xyxx, cb0[7].xyxx +ftoi r3.xy, r0.xyxx +mov r3.zw, l(0,0,0,0) +ldms_indexable(texture2dms)(float,float,float,float) r0.xyw, r3.xyzw, t1.xywz, l(0) +mad r0.xyw, r0.xyxw, cb0[13].xxxx, cb0[13].yyyy +mul r3.xyz, r0.yyyy, cb0[10].xyzx +mad r3.xyz, r0.xxxx, cb0[9].xyzx, r3.xyzx +mad r0.xyw, r0.wwww, cb0[11].xyxz, r3.xyxz +dp3 r1.z, r0.xywx, r0.xywx +rsq r1.z, r1.z +mul r0.xyw, r0.xyxw, r1.zzzz +mul r1.z, r0.z, l(0.050000) +mad r1.z, cb1[0].z, r1.z, l(1.000000) +mul r3.xy, r1.zzzz, cb1[0].xyxx +round_ne r3.xy, r3.xyxx +mad r3.xy, r3.xyxx, cb0[1].xyxx, r1.xyxx +mov r3.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r3.xyzx, t0.yzxw, s0, l(0.000000) +mad r3.xy, cb0[2].xyxx, r3.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r3.xyxx +mad r1.w, r0.z, l(0.050000), r1.z +add r3.xyz, -r2.xyzx, r4.xyzx +dp3 r2.w, r3.xyzx, r3.xyzx +dp3 r3.x, r0.xywx, r3.xyzx +rsq r3.y, r2.w +mad_sat r3.x, r3.x, r3.y, -cb0[3].w +mad_sat r2.w, r2.w, cb0[3].z, l(1.000000) +mul r3.yz, r1.wwww, cb1[0].xxyx +round_ne r3.yz, r3.yyzy +mad r4.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r4.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r3.yz, r3.wwww, r4.xxyx +mad r4.x, r0.z, l(0.050000), r1.w +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mul r4.yz, r4.xxxx, cb1[0].xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +mad r0.z, r0.z, l(0.050000), r4.x +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.w, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.w +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.w, r3.w, cb0[3].z, l(1.000000) +mul r3.w, r3.w, r4.y +mad r3.y, r3.y, r3.z, r3.w +mul r3.zw, r0.zzzz, cb1[0].xxxy +round_ne r3.zw, r3.zzzw +mad r5.xy, r3.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r3.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r3.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.z, r4.yzwy, r4.yzwy +dp3 r3.w, r0.xywx, r4.yzwy +rsq r4.y, r3.z +mad_sat r3.w, r3.w, r4.y, -cb0[3].w +mad_sat r3.z, r3.z, cb0[3].z, l(1.000000) +mad r3.y, r3.w, r3.z, r3.y +mul r3.zw, cb1[0].xxxy, l(0.000000, 0.000000, 0.707107, 0.707107) +mad r5.x, cb1[0].x, l(0.707107), -r3.w +add r5.y, r3.z, r3.w +mul r4.yz, r1.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r5.z, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r5.z +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.z, cb0[3].z, l(1.000000) +mul r4.y, r4.z, r4.y +mad r2.w, r3.x, r2.w, r4.y +mul r4.yz, r1.wwww, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.x, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.x, r3.x, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.x, r3.y +mul r4.yz, r4.xxxx, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mul r4.yz, r0.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mad r5.x, cb1[0].x, l(-0.000000), -cb1[0].y +mad r5.y, cb1[0].y, l(-0.000000), cb1[0].x +mul r4.yz, r1.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r2.w, r4.y, r3.y, r2.w +mul r4.yz, r1.wwww, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mul r4.yz, r4.xxxx, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r6.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r4.yz, r4.wwww, r5.zzwz +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mul r4.yz, r0.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r3.y, r4.yzwy, r4.yzwy +dp3 r4.y, r0.xywx, r4.yzwy +rsq r4.z, r3.y +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r3.y, r3.x +mad r5.x, cb1[0].x, l(-0.707107), -r3.w +mad r5.y, cb1[0].y, l(-0.707107), r3.z +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r2.w, r3.y, r3.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r4.xxxx, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r0.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r5.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r5.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mad r5.x, -cb1[0].y, l(-0.000000), -cb1[0].x +mad r5.y, cb1[0].x, l(-0.000000), -cb1[0].y +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r2.w, r3.y, r3.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r4.xxxx, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r0.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r5.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r5.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.y, cb1[0].y, l(-0.707107) +mad r5.x, cb1[0].x, l(-0.707107), -r3.y +dp2 r5.y, cb1[0].yxyy, l(-0.707107, -0.707107, 0.000000, 0.000000) +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r2.w, r3.y, r3.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r4.xxxx, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r0.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r5.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r5.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mad r5.x, cb1[0].x, l(0.000000), cb1[0].y +mad r5.y, cb1[0].y, l(0.000000), -cb1[0].x +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r2.w, r3.y, r3.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r4.xxxx, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.yz, r0.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r5.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r5.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r4.y, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r4.y +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r3.z, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r3.y, r3.z, r3.x +mul r3.y, cb1[0].y, l(-0.707107) +mad r5.x, cb1[0].x, l(0.707107), -r3.y +dp2 r5.y, cb1[0].yxyy, l(0.707107, -0.707107, 0.000000, 0.000000) +mul r3.yz, r1.zzzz, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r1.z, r3.yzwy, r3.yzwy +dp3 r3.y, r0.xywx, r3.yzwy +rsq r3.z, r1.z +mad_sat r3.y, r3.y, r3.z, -cb0[3].w +mad_sat r1.z, r1.z, cb0[3].z, l(1.000000) +mad r1.z, r3.y, r1.z, r2.w +mul r3.yz, r1.wwww, r5.xxyx +round_ne r3.yz, r3.yyzy +mad r6.xy, r3.yzyy, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r6.xyzx, t0.wyzx, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r6.xxyx, cb0[2].zzwz +mul r3.yz, r3.wwww, r4.yyzy +add r3.yzw, -r2.xxyz, r3.yyzw +dp3 r1.w, r3.yzwy, r3.yzwy +dp3 r2.w, r0.xywx, r3.yzwy +rsq r3.y, r1.w +mad_sat r2.w, r2.w, r3.y, -cb0[3].w +mad_sat r1.w, r1.w, cb0[3].z, l(1.000000) +mad r1.w, r2.w, r1.w, r3.x +mul r3.xy, r4.xxxx, r5.xyxx +round_ne r3.xy, r3.xyxx +mad r3.xy, r3.xyxx, cb0[1].xyxx, r1.xyxx +mov r3.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r3.xyzx, t0.yzxw, s0, l(0.000000) +mad r3.xy, cb0[2].xyxx, r3.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r3.xyxx +add r3.xyz, -r2.xyzx, r4.xyzx +dp3 r2.w, r3.xyzx, r3.xyzx +dp3 r3.x, r0.xywx, r3.xyzx +rsq r3.y, r2.w +mad_sat r3.x, r3.x, r3.y, -cb0[3].w +mad_sat r2.w, r2.w, cb0[3].z, l(1.000000) +mad r1.w, r3.x, r2.w, r1.w +mul r3.xy, r0.zzzz, r5.xyxx +round_ne r3.xy, r3.xyxx +mad r3.xy, r3.xyxx, cb0[1].xyxx, r1.xyxx +mov r3.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r3.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.xy, cb0[2].xyxx, r3.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r1.xyxx +add r2.xyw, -r2.xyxz, r4.xyxz +dp3 r0.z, r2.xywx, r2.xywx +dp3 r0.x, r0.xywx, r2.xywx +rsq r0.y, r0.z +mad_sat r0.x, r0.x, r0.y, -cb0[3].w +mad_sat r0.y, r0.z, cb0[3].z, l(1.000000) +mad r0.x, r0.x, r0.y, r1.w +mul r0.x, r0.x, cb0[4].y +mad r0.x, r1.z, cb0[4].x, r0.x +mul r0.x, r0.x, l(0.031250) +mad r0.y, r2.z, cb0[7].z, l(1.000000) +mul_sat r0.y, r0.y, cb0[7].w +dp2 r0.x, r0.xxxx, r0.yyyy +add_sat o0.x, -r0.x, l(1.000000) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_2_D3D11[] = +{ + 68, 88, 66, 67, 74, 56, + 96, 89, 103, 237, 192, 216, + 63, 76, 251, 1, 9, 23, + 240, 238, 1, 0, 0, 0, + 24, 66, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 88, 65, 0, 0, + 80, 0, 0, 0, 86, 16, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 89, 0, + 0, 4, 70, 142, 32, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 64, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 88, 32, 0, 4, 0, 112, + 16, 0, 1, 0, 0, 0, + 85, 85, 0, 0, 100, 32, + 0, 4, 50, 16, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 7, 0, 0, 0, 65, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 13, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 64, 0, 0, + 128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 56, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 62, 0, 0, + 128, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 49, 0, 0, 7, 130, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 31, 0, + 4, 3, 58, 0, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 18, 32, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 62, 0, 0, 1, 21, 0, + 0, 1, 50, 0, 0, 11, + 194, 0, 16, 0, 1, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 1, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 2, 0, 0, 0, 166, 10, + 16, 0, 2, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 50, 0, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 27, 0, + 0, 5, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 54, 0, 0, 8, 194, 0, + 16, 0, 3, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 46, 0, 0, 139, + 2, 1, 0, 128, 67, 85, + 21, 0, 178, 0, 16, 0, + 0, 0, 0, 0, 70, 14, + 16, 0, 3, 0, 0, 0, + 70, 123, 16, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 178, 0, 16, 0, + 0, 0, 0, 0, 70, 12, + 16, 0, 0, 0, 0, 0, + 6, 128, 32, 0, 0, 0, + 0, 0, 13, 0, 0, 0, + 86, 133, 32, 0, 0, 0, + 0, 0, 13, 0, 0, 0, + 56, 0, 0, 8, 114, 0, + 16, 0, 3, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 70, 130, 32, 0, + 0, 0, 0, 0, 10, 0, + 0, 0, 50, 0, 0, 10, + 114, 0, 16, 0, 3, 0, + 0, 0, 6, 0, 16, 0, + 0, 0, 0, 0, 70, 130, + 32, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 178, 0, + 16, 0, 0, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 70, 136, 32, 0, + 0, 0, 0, 0, 11, 0, + 0, 0, 70, 8, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 178, 0, 16, 0, + 0, 0, 0, 0, 70, 12, + 16, 0, 0, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 50, 0, 0, 10, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 8, 50, 0, 16, 0, + 3, 0, 0, 0, 166, 10, + 16, 0, 1, 0, 0, 0, + 70, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 3, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 3, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 42, 0, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 130, 0, 16, 0, 2, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 8, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 6, 129, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 6, 1, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 18, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 58, 0, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 8, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 5, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 4, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 50, 0, + 0, 9, 66, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 10, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 8, + 194, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 132, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 3, 0, 0, 0, 166, 14, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 3, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 4, 0, + 0, 0, 166, 11, 16, 0, + 3, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 34, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 11, 194, 0, 16, 0, + 3, 0, 0, 0, 6, 132, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 243, 4, + 53, 63, 243, 4, 53, 63, + 50, 0, 0, 11, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 243, 4, + 53, 63, 58, 0, 16, 128, + 65, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 7, + 34, 0, 16, 0, 5, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 5, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 4, 0, + 0, 0, 166, 11, 16, 0, + 5, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 5, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 5, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 130, 0, 16, 0, 2, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 5, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 4, 0, 0, 0, 166, 11, + 16, 0, 5, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 18, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 0, 16, 0, 4, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 5, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 4, 0, + 0, 0, 166, 11, 16, 0, + 5, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 5, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 12, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 59, 179, 26, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 34, 0, 16, 0, 5, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 59, 179, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 5, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 166, 11, 16, 0, 5, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 2, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 5, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 4, 0, 0, 0, 166, 11, + 16, 0, 5, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 0, 16, 0, 4, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 5, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 4, 0, + 0, 0, 166, 11, 16, 0, + 5, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 5, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 191, 58, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 5, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 243, 4, 53, 191, + 42, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 6, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 6, 0, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 13, 18, 0, + 16, 0, 5, 0, 0, 0, + 26, 128, 32, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 189, 187, 179, + 10, 128, 32, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 12, 34, 0, 16, 0, + 5, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 189, 187, 179, + 26, 128, 32, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 166, 10, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 2, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 6, 0, 16, 0, 4, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 6, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 8, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 245, 4, 53, 191, 50, 0, + 0, 11, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 241, 4, 53, 191, + 26, 0, 16, 128, 65, 0, + 0, 0, 3, 0, 0, 0, + 15, 0, 0, 11, 34, 0, + 16, 0, 5, 0, 0, 0, + 22, 133, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 241, 4, + 53, 191, 245, 4, 53, 191, + 0, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 6, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 6, 0, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 11, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 222, + 76, 50, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 12, + 34, 0, 16, 0, 5, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 222, 76, 50, 10, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 6, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 6, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 6, 0, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 3, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 150, 5, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 8, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 239, 4, + 53, 191, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 247, 4, 53, 63, 26, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 15, 0, + 0, 11, 34, 0, 16, 0, + 5, 0, 0, 0, 22, 133, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 247, 4, 53, 63, + 239, 4, 53, 191, 0, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 6, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 3, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 3, 0, + 0, 0, 86, 6, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 6, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 3, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 1, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 2, 0, + 0, 0, 70, 3, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 2, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 130, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 3, 0, + 0, 0, 6, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 3, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 3, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 3, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 130, 0, 16, 0, 2, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 8, 178, 0, 16, 0, + 2, 0, 0, 0, 70, 8, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 8, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 70, 3, 16, 0, 2, 0, + 0, 0, 70, 3, 16, 0, + 2, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 70, 3, 16, 0, 2, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 26, 128, 32, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 18, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 10, 128, 32, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 61, 50, 0, 0, 10, + 34, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 2, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 32, 0, 8, 34, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 58, 128, 32, 0, + 0, 0, 0, 0, 7, 0, + 0, 0, 15, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 6, 0, 16, 0, + 0, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 0, 32, 0, 8, 18, 32, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 62, 0, 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[9], immediateIndexed +dcl_constantbuffer cb1[2], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2darray (float,float,float,float) t0 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 8 +round_ni r0.xy, v0.xyxx +mad r0.xy, r0.xyxx, l(4.000000, 4.000000, 0.000000, 0.000000), cb1[1].xyxx +mul r0.zw, r0.xxxy, cb0[1].xxxy +mul r1.xy, r0.zwzz, l(0.250000, 0.250000, 0.000000, 0.000000) +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r2.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +div r0.z, cb0[3].x, r2.z +div r0.w, cb0[8].x, r0.z +max r0.w, r0.w, l(1.000000) +mul r0.z, r0.w, r0.z +lt r1.z, r0.z, l(1.000000) +if_nz r1.z + mov o0.x, l(1.000000) + ret +endif +mad r1.zw, cb0[2].xxxy, r1.xxxy, cb0[2].zzzw +mul r2.xy, r2.zzzz, r1.zwzz +ftoi r3.xy, r0.xyxx +mov r3.zw, l(0,0,0,0) +ld_indexable(texture2d)(float,float,float,float) r3.xyz, r3.xyzw, t1.xyzw +mad r3.xyz, r3.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000) +mul r0.x, r0.w, r0.w +div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x +mul r0.x, r0.x, cb0[3].z +mul r0.y, r0.z, l(0.050000) +mad r0.y, cb1[0].z, r0.y, l(1.000000) +mul r1.zw, r0.yyyy, cb1[0].xxxy +round_ne r1.zw, r1.zzzw +mad r4.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r4.xxxy, cb0[2].zzzw +mul r5.xy, r5.zzzz, r1.zwzz +mad r0.w, r0.z, l(0.050000), r0.y +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r1.z, r4.xyzx, r4.xyzx +dp3 r1.w, r3.xyzx, r4.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mul r4.xy, r0.wwww, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +mad r2.w, r0.z, l(0.050000), r0.w +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mul r4.yz, r2.wwww, cb1[0].xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +mad r0.z, r0.z, l(0.050000), r2.w +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r5.x, r4.yzwy, r4.yzwy +dp3 r4.y, r3.xyzx, r4.yzwy +rsq r4.z, r5.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.x, r0.x, l(1.000000) +mul r4.y, r4.z, r4.y +mad r3.w, r4.x, r3.w, r4.y +mul r4.xy, r0.zzzz, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r4.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r4.y, r4.w, r0.x, l(1.000000) +mad r3.w, r4.x, r4.y, r3.w +mul r4.xy, cb1[0].xyxx, l(0.707107, 0.707107, 0.000000, 0.000000) +mad r5.x, cb1[0].x, l(0.707107), -r4.y +add r5.y, r4.x, r4.y +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r4.z, r6.xyzx, r6.xyzx +dp3 r4.w, r3.xyzx, r6.xyzx +rsq r5.z, r4.z +mad_sat r4.w, r4.w, r5.z, -cb0[3].w +mad_sat r4.z, r4.z, r0.x, l(1.000000) +mul r4.z, r4.z, r4.w +mad r1.z, r1.w, r1.z, r4.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r1.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r1.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r1.w, r1.w, r0.x, l(1.000000) +mad r1.w, r4.z, r1.w, r3.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.000000), -cb1[0].y +mad r5.y, cb1[0].y, l(-0.000000), cb1[0].x +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.707107), -r4.y +mad r5.y, cb1[0].y, l(-0.707107), r4.x +mul r4.xy, r0.yyyy, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.x, r3.w, r1.z +mul r4.xy, r0.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r2.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r0.zzzz, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, -cb1[0].y, l(-0.000000), -cb1[0].x +mad r4.y, cb1[0].x, l(-0.000000), -cb1[0].y +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(-0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(-0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, cb1[0].x, l(0.000000), cb1[0].y +mad r4.y, cb1[0].y, l(0.000000), -cb1[0].x +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.y, r5.xyzx, r5.xyzx +dp3 r3.w, r3.xyzx, r5.xyzx +rsq r4.z, r0.y +mad_sat r3.w, r3.w, r4.z, -cb0[3].w +mad_sat r0.y, r0.y, r0.x, l(1.000000) +mad r0.y, r3.w, r0.y, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.w, r5.xyzx, r5.xyzx +dp3 r1.z, r3.xyzx, r5.xyzx +rsq r3.w, r0.w +mad_sat r1.z, r1.z, r3.w, -cb0[3].w +mad_sat r0.w, r0.w, r0.x, l(1.000000) +mad r0.w, r1.z, r0.w, r1.w +mul r1.zw, r2.wwww, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r5.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r1.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r1.z, r5.xyzx, r5.xyzx +dp3 r1.w, r3.xyzx, r5.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mad r0.w, r1.w, r1.z, r0.w +mul r1.zw, r0.zzzz, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r1.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.xy, cb0[2].xyxx, r1.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r1.xyxx +add r1.xyz, -r2.xyzx, r4.xyzx +dp3 r0.z, r1.xyzx, r1.xyzx +dp3 r1.x, r3.xyzx, r1.xyzx +rsq r1.y, r0.z +mad_sat r1.x, r1.x, r1.y, -cb0[3].w +mad_sat r0.x, r0.z, r0.x, l(1.000000) +mad r0.x, r1.x, r0.x, r0.w +mul r0.x, r0.x, cb0[4].y +mad r0.x, r0.y, cb0[4].x, r0.x +mad_sat o0.x, -r0.x, l(0.062500), l(1.000000) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_0_D3D11[] = +{ + 68, 88, 66, 67, 183, 147, + 88, 95, 24, 75, 181, 0, + 190, 57, 244, 21, 132, 156, + 44, 209, 1, 0, 0, 0, + 8, 65, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 72, 64, 0, 0, + 80, 0, 0, 0, 18, 16, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 89, 0, + 0, 4, 70, 142, 32, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 64, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 88, 24, 0, 4, 0, 112, + 16, 0, 1, 0, 0, 0, + 85, 85, 0, 0, 100, 32, + 0, 4, 50, 16, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 8, 0, 0, 0, 65, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 13, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 64, 0, 0, + 128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 56, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 62, 0, 0, + 128, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 14, 0, 0, 8, 130, 0, + 16, 0, 0, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 8, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 52, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 49, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 31, 0, 4, 3, + 42, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 18, 32, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 62, 0, + 0, 1, 21, 0, 0, 1, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 1, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 2, 0, + 0, 0, 166, 10, 16, 0, + 2, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 27, 0, 0, 5, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 54, 0, 0, 8, + 194, 0, 16, 0, 3, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 45, 0, + 0, 137, 194, 0, 0, 128, + 67, 85, 21, 0, 114, 0, + 16, 0, 3, 0, 0, 0, + 70, 14, 16, 0, 3, 0, + 0, 0, 70, 126, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 15, 114, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 0, 64, 0, 0, 0, 64, + 0, 0, 0, 64, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 191, 0, 0, + 128, 191, 0, 0, 128, 191, + 0, 0, 0, 0, 56, 0, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 14, 0, 0, 10, + 18, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 63, 0, 0, + 128, 63, 0, 0, 128, 63, + 0, 0, 128, 63, 10, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 8, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 50, 0, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 8, 194, 0, 16, 0, + 1, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 26, 0, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 8, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 58, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 8, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 129, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 5, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 50, 0, 0, 9, + 66, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 58, 0, 16, 0, 2, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 5, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 5, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 66, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 5, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 8, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 243, 4, + 53, 63, 243, 4, 53, 63, + 0, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 63, 26, 0, + 16, 128, 65, 0, 0, 0, + 4, 0, 0, 0, 0, 0, + 0, 7, 34, 0, 16, 0, + 5, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 12, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 34, 0, + 16, 0, 5, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 191, 26, 0, + 16, 128, 65, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 5, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 243, 4, 53, 191, + 10, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 13, + 18, 0, 16, 0, 4, 0, + 0, 0, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 187, 179, 10, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 12, 34, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 187, 179, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 8, 130, 0, + 16, 0, 3, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 245, 4, + 53, 191, 50, 0, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 241, 4, 53, 191, 58, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 15, 0, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 22, 133, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 241, 4, 53, 191, + 245, 4, 53, 191, 0, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 222, + 76, 50, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 12, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 222, 76, 50, 10, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 8, + 130, 0, 16, 0, 3, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 239, 4, 53, 191, 50, 0, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 247, 4, 53, 63, + 58, 0, 16, 128, 65, 0, + 0, 0, 3, 0, 0, 0, + 15, 0, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 22, 133, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 247, 4, + 53, 63, 239, 4, 53, 191, + 0, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 34, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 1, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 1, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 1, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 1, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 8, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 128, + 32, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 18, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 50, 32, 0, 10, + 18, 32, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 61, 1, 64, + 0, 0, 0, 0, 128, 63, + 62, 0, 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[14], immediateIndexed +dcl_constantbuffer cb1[2], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2darray (float,float,float,float) t0 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 8 +round_ni r0.xy, v0.xyxx +mad r0.xy, r0.xyxx, l(4.000000, 4.000000, 0.000000, 0.000000), cb1[1].xyxx +mul r0.zw, r0.xxxy, cb0[1].xxxy +mul r1.xy, r0.zwzz, l(0.250000, 0.250000, 0.000000, 0.000000) +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r2.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +div r0.z, cb0[3].x, r2.z +div r0.w, cb0[8].x, r0.z +max r0.w, r0.w, l(1.000000) +mul r0.z, r0.w, r0.z +lt r1.z, r0.z, l(1.000000) +if_nz r1.z + mov o0.x, l(1.000000) + ret +endif +mad r1.zw, cb0[2].xxxy, r1.xxxy, cb0[2].zzzw +mul r2.xy, r2.zzzz, r1.zwzz +add r0.xy, r0.xyxx, cb0[7].xyxx +ftoi r3.xy, r0.xyxx +mov r3.zw, l(0,0,0,0) +ld_indexable(texture2d)(float,float,float,float) r3.xyz, r3.xyzw, t1.xyzw +mad r3.xyz, r3.xyzx, cb0[13].xxxx, cb0[13].yyyy +mul r4.xyz, r3.yyyy, cb0[10].xyzx +mad r3.xyw, r3.xxxx, cb0[9].xyxz, r4.xyxz +mad r3.xyz, r3.zzzz, cb0[11].xyzx, r3.xywx +dp3 r0.x, r3.xyzx, r3.xyzx +rsq r0.x, r0.x +mul r3.xyz, r0.xxxx, r3.xyzx +mul r0.x, r0.w, r0.w +div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x +mul r0.x, r0.x, cb0[3].z +mul r0.y, r0.z, l(0.050000) +mad r0.y, cb1[0].z, r0.y, l(1.000000) +mul r1.zw, r0.yyyy, cb1[0].xxxy +round_ne r1.zw, r1.zzzw +mad r4.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r4.xxxy, cb0[2].zzzw +mul r5.xy, r5.zzzz, r1.zwzz +mad r0.w, r0.z, l(0.050000), r0.y +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r1.z, r4.xyzx, r4.xyzx +dp3 r1.w, r3.xyzx, r4.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mul r4.xy, r0.wwww, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +mad r2.w, r0.z, l(0.050000), r0.w +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mul r4.yz, r2.wwww, cb1[0].xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +mad r0.z, r0.z, l(0.050000), r2.w +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r5.x, r4.yzwy, r4.yzwy +dp3 r4.y, r3.xyzx, r4.yzwy +rsq r4.z, r5.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.x, r0.x, l(1.000000) +mul r4.y, r4.z, r4.y +mad r3.w, r4.x, r3.w, r4.y +mul r4.xy, r0.zzzz, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r4.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r4.y, r4.w, r0.x, l(1.000000) +mad r3.w, r4.x, r4.y, r3.w +mul r4.xy, cb1[0].xyxx, l(0.707107, 0.707107, 0.000000, 0.000000) +mad r5.x, cb1[0].x, l(0.707107), -r4.y +add r5.y, r4.x, r4.y +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r4.z, r6.xyzx, r6.xyzx +dp3 r4.w, r3.xyzx, r6.xyzx +rsq r5.z, r4.z +mad_sat r4.w, r4.w, r5.z, -cb0[3].w +mad_sat r4.z, r4.z, r0.x, l(1.000000) +mul r4.z, r4.z, r4.w +mad r1.z, r1.w, r1.z, r4.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r1.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r1.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r1.w, r1.w, r0.x, l(1.000000) +mad r1.w, r4.z, r1.w, r3.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.000000), -cb1[0].y +mad r5.y, cb1[0].y, l(-0.000000), cb1[0].x +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.707107), -r4.y +mad r5.y, cb1[0].y, l(-0.707107), r4.x +mul r4.xy, r0.yyyy, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.x, r3.w, r1.z +mul r4.xy, r0.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r2.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r0.zzzz, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, -cb1[0].y, l(-0.000000), -cb1[0].x +mad r4.y, cb1[0].x, l(-0.000000), -cb1[0].y +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(-0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(-0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, cb1[0].x, l(0.000000), cb1[0].y +mad r4.y, cb1[0].y, l(0.000000), -cb1[0].x +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.y, r5.xyzx, r5.xyzx +dp3 r3.w, r3.xyzx, r5.xyzx +rsq r4.z, r0.y +mad_sat r3.w, r3.w, r4.z, -cb0[3].w +mad_sat r0.y, r0.y, r0.x, l(1.000000) +mad r0.y, r3.w, r0.y, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.w, r5.xyzx, r5.xyzx +dp3 r1.z, r3.xyzx, r5.xyzx +rsq r3.w, r0.w +mad_sat r1.z, r1.z, r3.w, -cb0[3].w +mad_sat r0.w, r0.w, r0.x, l(1.000000) +mad r0.w, r1.z, r0.w, r1.w +mul r1.zw, r2.wwww, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r5.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r1.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r1.z, r5.xyzx, r5.xyzx +dp3 r1.w, r3.xyzx, r5.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mad r0.w, r1.w, r1.z, r0.w +mul r1.zw, r0.zzzz, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r1.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.xy, cb0[2].xyxx, r1.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r1.xyxx +add r1.xyz, -r2.xyzx, r4.xyzx +dp3 r0.z, r1.xyzx, r1.xyzx +dp3 r1.x, r3.xyzx, r1.xyzx +rsq r1.y, r0.z +mad_sat r1.x, r1.x, r1.y, -cb0[3].w +mad_sat r0.x, r0.z, r0.x, l(1.000000) +mad r0.x, r1.x, r0.x, r0.w +mul r0.x, r0.x, cb0[4].y +mad r0.x, r0.y, cb0[4].x, r0.x +mad_sat o0.x, -r0.x, l(0.062500), l(1.000000) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_1_D3D11[] = +{ + 68, 88, 66, 67, 3, 60, + 166, 37, 198, 235, 228, 104, + 229, 189, 208, 99, 226, 92, + 114, 158, 1, 0, 0, 0, + 212, 65, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 20, 65, 0, 0, + 80, 0, 0, 0, 69, 16, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 89, 0, + 0, 4, 70, 142, 32, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 64, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 88, 24, 0, 4, 0, 112, + 16, 0, 1, 0, 0, 0, + 85, 85, 0, 0, 100, 32, + 0, 4, 50, 16, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 8, 0, 0, 0, 65, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 13, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 64, 0, 0, + 128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 56, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 62, 0, 0, + 128, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 14, 0, 0, 8, 130, 0, + 16, 0, 0, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 8, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 52, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 49, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 31, 0, 4, 3, + 42, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 18, 32, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 62, 0, + 0, 1, 21, 0, 0, 1, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 1, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 2, 0, + 0, 0, 166, 10, 16, 0, + 2, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 7, 0, + 0, 0, 27, 0, 0, 5, + 50, 0, 16, 0, 3, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 8, 194, 0, 16, 0, + 3, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 45, 0, 0, 137, 194, 0, + 0, 128, 67, 85, 21, 0, + 114, 0, 16, 0, 3, 0, + 0, 0, 70, 14, 16, 0, + 3, 0, 0, 0, 70, 126, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 11, 114, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 6, 128, 32, 0, + 0, 0, 0, 0, 13, 0, + 0, 0, 86, 133, 32, 0, + 0, 0, 0, 0, 13, 0, + 0, 0, 56, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 3, 0, 0, 0, 70, 130, + 32, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 50, 0, + 0, 10, 178, 0, 16, 0, + 3, 0, 0, 0, 6, 0, + 16, 0, 3, 0, 0, 0, + 70, 136, 32, 0, 0, 0, + 0, 0, 9, 0, 0, 0, + 70, 8, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 114, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 3, 0, 0, 0, 70, 130, + 32, 0, 0, 0, 0, 0, + 11, 0, 0, 0, 70, 3, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 114, 0, + 16, 0, 3, 0, 0, 0, + 6, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 14, 0, 0, 10, + 18, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 63, 0, 0, + 128, 63, 0, 0, 128, 63, + 0, 0, 128, 63, 10, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 8, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 50, 0, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 8, 194, 0, 16, 0, + 1, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 26, 0, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 8, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 58, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 8, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 129, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 5, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 50, 0, 0, 9, + 66, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 58, 0, 16, 0, 2, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 5, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 5, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 66, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 5, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 8, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 243, 4, + 53, 63, 243, 4, 53, 63, + 0, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 63, 26, 0, + 16, 128, 65, 0, 0, 0, + 4, 0, 0, 0, 0, 0, + 0, 7, 34, 0, 16, 0, + 5, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 12, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 34, 0, + 16, 0, 5, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 191, 26, 0, + 16, 128, 65, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 5, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 243, 4, 53, 191, + 10, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 13, + 18, 0, 16, 0, 4, 0, + 0, 0, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 187, 179, 10, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 12, 34, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 187, 179, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 8, 130, 0, + 16, 0, 3, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 245, 4, + 53, 191, 50, 0, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 241, 4, 53, 191, 58, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 15, 0, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 22, 133, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 241, 4, 53, 191, + 245, 4, 53, 191, 0, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 222, + 76, 50, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 12, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 222, 76, 50, 10, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 8, + 130, 0, 16, 0, 3, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 239, 4, 53, 191, 50, 0, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 247, 4, 53, 63, + 58, 0, 16, 128, 65, 0, + 0, 0, 3, 0, 0, 0, + 15, 0, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 22, 133, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 247, 4, + 53, 63, 239, 4, 53, 191, + 0, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 34, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 1, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 1, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 1, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 1, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 8, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 128, + 32, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 18, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 50, 32, 0, 10, + 18, 32, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 61, 1, 64, + 0, 0, 0, 0, 128, 63, + 62, 0, 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[14], immediateIndexed +dcl_constantbuffer cb1[2], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2darray (float,float,float,float) t0 +dcl_resource_texture2dms(0) (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 8 +round_ni r0.xy, v0.xyxx +mad r0.xy, r0.xyxx, l(4.000000, 4.000000, 0.000000, 0.000000), cb1[1].xyxx +mul r0.zw, r0.xxxy, cb0[1].xxxy +mul r1.xy, r0.zwzz, l(0.250000, 0.250000, 0.000000, 0.000000) +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r2.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +div r0.z, cb0[3].x, r2.z +div r0.w, cb0[8].x, r0.z +max r0.w, r0.w, l(1.000000) +mul r0.z, r0.w, r0.z +lt r1.z, r0.z, l(1.000000) +if_nz r1.z + mov o0.x, l(1.000000) + ret +endif +mad r1.zw, cb0[2].xxxy, r1.xxxy, cb0[2].zzzw +mul r2.xy, r2.zzzz, r1.zwzz +add r0.xy, r0.xyxx, cb0[7].xyxx +ftoi r3.xy, r0.xyxx +mov r3.zw, l(0,0,0,0) +ldms_indexable(texture2dms)(float,float,float,float) r3.xyz, r3.xyzw, t1.xyzw, l(0) +mad r3.xyz, r3.xyzx, cb0[13].xxxx, cb0[13].yyyy +mul r4.xyz, r3.yyyy, cb0[10].xyzx +mad r3.xyw, r3.xxxx, cb0[9].xyxz, r4.xyxz +mad r3.xyz, r3.zzzz, cb0[11].xyzx, r3.xywx +dp3 r0.x, r3.xyzx, r3.xyzx +rsq r0.x, r0.x +mul r3.xyz, r0.xxxx, r3.xyzx +mul r0.x, r0.w, r0.w +div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x +mul r0.x, r0.x, cb0[3].z +mul r0.y, r0.z, l(0.050000) +mad r0.y, cb1[0].z, r0.y, l(1.000000) +mul r1.zw, r0.yyyy, cb1[0].xxxy +round_ne r1.zw, r1.zzzw +mad r4.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r4.xxxy, cb0[2].zzzw +mul r5.xy, r5.zzzz, r1.zwzz +mad r0.w, r0.z, l(0.050000), r0.y +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r1.z, r4.xyzx, r4.xyzx +dp3 r1.w, r3.xyzx, r4.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mul r4.xy, r0.wwww, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +mad r2.w, r0.z, l(0.050000), r0.w +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mul r4.yz, r2.wwww, cb1[0].xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +mad r0.z, r0.z, l(0.050000), r2.w +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r5.x, r4.yzwy, r4.yzwy +dp3 r4.y, r3.xyzx, r4.yzwy +rsq r4.z, r5.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.x, r0.x, l(1.000000) +mul r4.y, r4.z, r4.y +mad r3.w, r4.x, r3.w, r4.y +mul r4.xy, r0.zzzz, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r4.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r4.y, r4.w, r0.x, l(1.000000) +mad r3.w, r4.x, r4.y, r3.w +mul r4.xy, cb1[0].xyxx, l(0.707107, 0.707107, 0.000000, 0.000000) +mad r5.x, cb1[0].x, l(0.707107), -r4.y +add r5.y, r4.x, r4.y +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r4.z, r6.xyzx, r6.xyzx +dp3 r4.w, r3.xyzx, r6.xyzx +rsq r5.z, r4.z +mad_sat r4.w, r4.w, r5.z, -cb0[3].w +mad_sat r4.z, r4.z, r0.x, l(1.000000) +mul r4.z, r4.z, r4.w +mad r1.z, r1.w, r1.z, r4.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r1.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r1.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r1.w, r1.w, r0.x, l(1.000000) +mad r1.w, r4.z, r1.w, r3.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.000000), -cb1[0].y +mad r5.y, cb1[0].y, l(-0.000000), cb1[0].x +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.707107), -r4.y +mad r5.y, cb1[0].y, l(-0.707107), r4.x +mul r4.xy, r0.yyyy, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.x, r3.w, r1.z +mul r4.xy, r0.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r2.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r0.zzzz, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, -cb1[0].y, l(-0.000000), -cb1[0].x +mad r4.y, cb1[0].x, l(-0.000000), -cb1[0].y +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(-0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(-0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, cb1[0].x, l(0.000000), cb1[0].y +mad r4.y, cb1[0].y, l(0.000000), -cb1[0].x +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.y, r5.xyzx, r5.xyzx +dp3 r3.w, r3.xyzx, r5.xyzx +rsq r4.z, r0.y +mad_sat r3.w, r3.w, r4.z, -cb0[3].w +mad_sat r0.y, r0.y, r0.x, l(1.000000) +mad r0.y, r3.w, r0.y, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.w, r5.xyzx, r5.xyzx +dp3 r1.z, r3.xyzx, r5.xyzx +rsq r3.w, r0.w +mad_sat r1.z, r1.z, r3.w, -cb0[3].w +mad_sat r0.w, r0.w, r0.x, l(1.000000) +mad r0.w, r1.z, r0.w, r1.w +mul r1.zw, r2.wwww, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r5.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r1.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r1.z, r5.xyzx, r5.xyzx +dp3 r1.w, r3.xyzx, r5.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mad r0.w, r1.w, r1.z, r0.w +mul r1.zw, r0.zzzz, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r1.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.xy, cb0[2].xyxx, r1.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r1.xyxx +add r1.xyz, -r2.xyzx, r4.xyzx +dp3 r0.z, r1.xyzx, r1.xyzx +dp3 r1.x, r3.xyzx, r1.xyzx +rsq r1.y, r0.z +mad_sat r1.x, r1.x, r1.y, -cb0[3].w +mad_sat r0.x, r0.z, r0.x, l(1.000000) +mad r0.x, r1.x, r0.x, r0.w +mul r0.x, r0.x, cb0[4].y +mad r0.x, r0.y, cb0[4].x, r0.x +mad_sat o0.x, -r0.x, l(0.062500), l(1.000000) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_2_D3D11[] = +{ + 68, 88, 66, 67, 93, 71, + 191, 31, 156, 207, 201, 151, + 184, 24, 169, 54, 58, 87, + 42, 38, 1, 0, 0, 0, + 220, 65, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 28, 65, 0, 0, + 80, 0, 0, 0, 71, 16, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 89, 0, + 0, 4, 70, 142, 32, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 64, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 88, 32, 0, 4, 0, 112, + 16, 0, 1, 0, 0, 0, + 85, 85, 0, 0, 100, 32, + 0, 4, 50, 16, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 8, 0, 0, 0, 65, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 13, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 64, 0, 0, + 128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 56, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 62, 0, 0, + 128, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 14, 0, 0, 8, 130, 0, + 16, 0, 0, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 8, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 52, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 49, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 31, 0, 4, 3, + 42, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 18, 32, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 62, 0, + 0, 1, 21, 0, 0, 1, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 1, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 2, 0, + 0, 0, 166, 10, 16, 0, + 2, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 7, 0, + 0, 0, 27, 0, 0, 5, + 50, 0, 16, 0, 3, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 8, 194, 0, 16, 0, + 3, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 46, 0, 0, 139, 2, 1, + 0, 128, 67, 85, 21, 0, + 114, 0, 16, 0, 3, 0, + 0, 0, 70, 14, 16, 0, + 3, 0, 0, 0, 70, 126, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 114, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 6, 128, + 32, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 86, 133, + 32, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 56, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 3, 0, 0, 0, + 70, 130, 32, 0, 0, 0, + 0, 0, 10, 0, 0, 0, + 50, 0, 0, 10, 178, 0, + 16, 0, 3, 0, 0, 0, + 6, 0, 16, 0, 3, 0, + 0, 0, 70, 136, 32, 0, + 0, 0, 0, 0, 9, 0, + 0, 0, 70, 8, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 114, 0, 16, 0, + 3, 0, 0, 0, 166, 10, + 16, 0, 3, 0, 0, 0, + 70, 130, 32, 0, 0, 0, + 0, 0, 11, 0, 0, 0, + 70, 3, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 114, 0, 16, 0, 3, 0, + 0, 0, 6, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 18, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 14, 0, + 0, 10, 18, 0, 16, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 128, 63, + 0, 0, 128, 63, 0, 0, + 128, 63, 0, 0, 128, 63, + 10, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 8, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 34, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 50, 0, 0, 10, + 34, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 8, 194, 0, + 16, 0, 1, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 132, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 1, 0, + 0, 0, 166, 14, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 1, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 26, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 2, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 8, 50, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 70, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 2, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 58, 0, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 8, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 129, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 5, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 4, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 50, 0, + 0, 9, 66, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 58, 0, 16, 0, + 2, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 5, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 5, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 66, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 5, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 56, 0, + 0, 8, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 70, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 243, 4, 53, 63, 243, 4, + 53, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 243, 4, 53, 63, + 26, 0, 16, 128, 65, 0, + 0, 0, 4, 0, 0, 0, + 0, 0, 0, 7, 34, 0, + 16, 0, 5, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 7, 0, 0, 0, 166, 10, + 16, 0, 7, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 7, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 5, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 12, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 59, 179, 26, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 34, 0, 16, 0, 5, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 59, 179, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 7, 0, 0, 0, 166, 10, + 16, 0, 7, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 7, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 7, 0, 0, 0, 166, 10, + 16, 0, 7, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 7, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 7, 0, 0, 0, 166, 10, + 16, 0, 7, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 7, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 11, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 243, 4, 53, 191, + 26, 0, 16, 128, 65, 0, + 0, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 34, 0, + 16, 0, 5, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 243, 4, + 53, 191, 10, 0, 16, 0, + 4, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 13, 18, 0, 16, 0, + 4, 0, 0, 0, 26, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 187, 179, 10, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 12, + 34, 0, 16, 0, 4, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 187, 179, 26, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 8, + 130, 0, 16, 0, 3, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 245, 4, 53, 191, 50, 0, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 241, 4, 53, 191, + 58, 0, 16, 128, 65, 0, + 0, 0, 3, 0, 0, 0, + 15, 0, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 22, 133, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 241, 4, + 53, 191, 245, 4, 53, 191, + 0, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 222, 76, 50, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 12, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 222, 76, 50, + 10, 128, 32, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 130, 0, 16, 0, + 3, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 239, 4, 53, 191, + 50, 0, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 247, 4, + 53, 63, 58, 0, 16, 128, + 65, 0, 0, 0, 3, 0, + 0, 0, 15, 0, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 22, 133, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 247, 4, 53, 63, 239, 4, + 53, 191, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 34, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 1, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 1, 0, + 0, 0, 166, 14, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 1, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 2, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 1, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 1, 0, + 0, 0, 166, 14, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 1, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 1, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 18, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 8, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 26, 128, 32, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 18, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 10, 128, 32, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 50, 32, + 0, 10, 18, 32, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 61, + 1, 64, 0, 0, 0, 0, + 128, 63, 62, 0, 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[9], immediateIndexed +dcl_constantbuffer cb1[2], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2darray (float,float,float,float) t0 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 8 +round_ni r0.xy, v0.xyxx +mad r0.xy, r0.xyxx, l(4.000000, 4.000000, 0.000000, 0.000000), cb1[1].xyxx +mul r0.zw, r0.xxxy, cb0[1].xxxy +mul r1.xy, r0.zwzz, l(0.250000, 0.250000, 0.000000, 0.000000) +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r2.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +div r0.z, cb0[3].x, r2.z +div r0.w, cb0[8].x, r0.z +max r0.w, r0.w, l(1.000000) +mul r0.z, r0.w, r0.z +lt r1.z, r0.z, l(1.000000) +if_nz r1.z + mov o0.x, l(1.000000) + ret +endif +mad r1.zw, cb0[2].xxxy, r1.xxxy, cb0[2].zzzw +mul r2.xy, r2.zzzz, r1.zwzz +ftoi r3.xy, r0.xyxx +mov r3.zw, l(0,0,0,0) +ld_indexable(texture2d)(float,float,float,float) r3.xyz, r3.xyzw, t1.xyzw +mad r3.xyz, r3.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000) +mul r0.x, r0.w, r0.w +div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x +mul r0.x, r0.x, cb0[3].z +mul r0.y, r0.z, l(0.050000) +mad r0.y, cb1[0].z, r0.y, l(1.000000) +mul r1.zw, r0.yyyy, cb1[0].xxxy +round_ne r1.zw, r1.zzzw +mad r4.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r4.xxxy, cb0[2].zzzw +mul r5.xy, r5.zzzz, r1.zwzz +mad r0.w, r0.z, l(0.050000), r0.y +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r1.z, r4.xyzx, r4.xyzx +dp3 r1.w, r3.xyzx, r4.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mul r4.xy, r0.wwww, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +mad r2.w, r0.z, l(0.050000), r0.w +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mul r4.yz, r2.wwww, cb1[0].xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +mad r0.z, r0.z, l(0.050000), r2.w +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r5.x, r4.yzwy, r4.yzwy +dp3 r4.y, r3.xyzx, r4.yzwy +rsq r4.z, r5.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.x, r0.x, l(1.000000) +mul r4.y, r4.z, r4.y +mad r3.w, r4.x, r3.w, r4.y +mul r4.xy, r0.zzzz, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r4.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r4.y, r4.w, r0.x, l(1.000000) +mad r3.w, r4.x, r4.y, r3.w +mul r4.xy, cb1[0].xyxx, l(0.707107, 0.707107, 0.000000, 0.000000) +mad r5.x, cb1[0].x, l(0.707107), -r4.y +add r5.y, r4.x, r4.y +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r4.z, r6.xyzx, r6.xyzx +dp3 r4.w, r3.xyzx, r6.xyzx +rsq r5.z, r4.z +mad_sat r4.w, r4.w, r5.z, -cb0[3].w +mad_sat r4.z, r4.z, r0.x, l(1.000000) +mul r4.z, r4.z, r4.w +mad r1.z, r1.w, r1.z, r4.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r1.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r1.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r1.w, r1.w, r0.x, l(1.000000) +mad r1.w, r4.z, r1.w, r3.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.000000), -cb1[0].y +mad r5.y, cb1[0].y, l(-0.000000), cb1[0].x +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.707107), -r4.y +mad r5.y, cb1[0].y, l(-0.707107), r4.x +mul r4.xy, r0.yyyy, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.x, r3.w, r1.z +mul r4.xy, r0.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r2.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r0.zzzz, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, -cb1[0].y, l(-0.000000), -cb1[0].x +mad r4.y, cb1[0].x, l(-0.000000), -cb1[0].y +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(-0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(-0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, cb1[0].x, l(0.000000), cb1[0].y +mad r4.y, cb1[0].y, l(0.000000), -cb1[0].x +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.y, r5.xyzx, r5.xyzx +dp3 r3.w, r3.xyzx, r5.xyzx +rsq r4.z, r0.y +mad_sat r3.w, r3.w, r4.z, -cb0[3].w +mad_sat r0.y, r0.y, r0.x, l(1.000000) +mad r0.y, r3.w, r0.y, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.w, r5.xyzx, r5.xyzx +dp3 r1.z, r3.xyzx, r5.xyzx +rsq r3.w, r0.w +mad_sat r1.z, r1.z, r3.w, -cb0[3].w +mad_sat r0.w, r0.w, r0.x, l(1.000000) +mad r0.w, r1.z, r0.w, r1.w +mul r1.zw, r2.wwww, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r5.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r1.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r1.z, r5.xyzx, r5.xyzx +dp3 r1.w, r3.xyzx, r5.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mad r0.w, r1.w, r1.z, r0.w +mul r1.zw, r0.zzzz, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r1.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.xy, cb0[2].xyxx, r1.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r1.xyxx +add r1.xyz, -r2.xyzx, r4.xyzx +dp3 r0.z, r1.xyzx, r1.xyzx +dp3 r1.x, r3.xyzx, r1.xyzx +rsq r1.y, r0.z +mad_sat r1.x, r1.x, r1.y, -cb0[3].w +mad_sat r0.x, r0.z, r0.x, l(1.000000) +mad r0.x, r1.x, r0.x, r0.w +mul r0.x, r0.x, cb0[4].y +mad r0.x, r0.y, cb0[4].x, r0.x +mul r0.x, r0.x, l(0.031250) +mad r0.y, r2.z, cb0[7].z, l(1.000000) +mul_sat r0.y, r0.y, cb0[7].w +dp2 r0.x, r0.xxxx, r0.yyyy +add_sat o0.x, -r0.x, l(1.000000) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_0_D3D11[] = +{ + 68, 88, 66, 67, 108, 66, + 254, 241, 37, 115, 160, 100, + 166, 174, 201, 176, 13, 38, + 125, 39, 1, 0, 0, 0, + 128, 65, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 192, 64, 0, 0, + 80, 0, 0, 0, 48, 16, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 89, 0, + 0, 4, 70, 142, 32, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 64, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 88, 24, 0, 4, 0, 112, + 16, 0, 1, 0, 0, 0, + 85, 85, 0, 0, 100, 32, + 0, 4, 50, 16, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 8, 0, 0, 0, 65, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 13, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 64, 0, 0, + 128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 56, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 62, 0, 0, + 128, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 14, 0, 0, 8, 130, 0, + 16, 0, 0, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 8, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 52, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 49, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 31, 0, 4, 3, + 42, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 18, 32, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 62, 0, + 0, 1, 21, 0, 0, 1, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 1, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 2, 0, + 0, 0, 166, 10, 16, 0, + 2, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 27, 0, 0, 5, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 54, 0, 0, 8, + 194, 0, 16, 0, 3, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 45, 0, + 0, 137, 194, 0, 0, 128, + 67, 85, 21, 0, 114, 0, + 16, 0, 3, 0, 0, 0, + 70, 14, 16, 0, 3, 0, + 0, 0, 70, 126, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 15, 114, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 0, 64, 0, 0, 0, 64, + 0, 0, 0, 64, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 191, 0, 0, + 128, 191, 0, 0, 128, 191, + 0, 0, 0, 0, 56, 0, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 14, 0, 0, 10, + 18, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 63, 0, 0, + 128, 63, 0, 0, 128, 63, + 0, 0, 128, 63, 10, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 8, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 50, 0, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 8, 194, 0, 16, 0, + 1, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 26, 0, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 8, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 58, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 8, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 129, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 5, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 50, 0, 0, 9, + 66, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 58, 0, 16, 0, 2, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 5, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 5, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 66, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 5, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 8, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 243, 4, + 53, 63, 243, 4, 53, 63, + 0, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 63, 26, 0, + 16, 128, 65, 0, 0, 0, + 4, 0, 0, 0, 0, 0, + 0, 7, 34, 0, 16, 0, + 5, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 12, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 34, 0, + 16, 0, 5, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 191, 26, 0, + 16, 128, 65, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 5, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 243, 4, 53, 191, + 10, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 13, + 18, 0, 16, 0, 4, 0, + 0, 0, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 187, 179, 10, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 12, 34, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 187, 179, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 8, 130, 0, + 16, 0, 3, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 245, 4, + 53, 191, 50, 0, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 241, 4, 53, 191, 58, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 15, 0, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 22, 133, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 241, 4, 53, 191, + 245, 4, 53, 191, 0, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 222, + 76, 50, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 12, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 222, 76, 50, 10, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 8, + 130, 0, 16, 0, 3, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 239, 4, 53, 191, 50, 0, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 247, 4, 53, 63, + 58, 0, 16, 128, 65, 0, + 0, 0, 3, 0, 0, 0, + 15, 0, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 22, 133, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 247, 4, + 53, 63, 239, 4, 53, 191, + 0, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 34, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 1, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 1, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 1, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 1, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 8, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 128, + 32, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 18, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 61, + 50, 0, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 2, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 7, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 32, + 0, 8, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 58, 128, 32, 0, 0, 0, + 0, 0, 7, 0, 0, 0, + 15, 0, 0, 7, 18, 0, + 16, 0, 0, 0, 0, 0, + 6, 0, 16, 0, 0, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 0, 32, + 0, 8, 18, 32, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 62, 0, 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[14], immediateIndexed +dcl_constantbuffer cb1[2], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2darray (float,float,float,float) t0 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 8 +round_ni r0.xy, v0.xyxx +mad r0.xy, r0.xyxx, l(4.000000, 4.000000, 0.000000, 0.000000), cb1[1].xyxx +mul r0.zw, r0.xxxy, cb0[1].xxxy +mul r1.xy, r0.zwzz, l(0.250000, 0.250000, 0.000000, 0.000000) +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r2.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +div r0.z, cb0[3].x, r2.z +div r0.w, cb0[8].x, r0.z +max r0.w, r0.w, l(1.000000) +mul r0.z, r0.w, r0.z +lt r1.z, r0.z, l(1.000000) +if_nz r1.z + mov o0.x, l(1.000000) + ret +endif +mad r1.zw, cb0[2].xxxy, r1.xxxy, cb0[2].zzzw +mul r2.xy, r2.zzzz, r1.zwzz +add r0.xy, r0.xyxx, cb0[7].xyxx +ftoi r3.xy, r0.xyxx +mov r3.zw, l(0,0,0,0) +ld_indexable(texture2d)(float,float,float,float) r3.xyz, r3.xyzw, t1.xyzw +mad r3.xyz, r3.xyzx, cb0[13].xxxx, cb0[13].yyyy +mul r4.xyz, r3.yyyy, cb0[10].xyzx +mad r3.xyw, r3.xxxx, cb0[9].xyxz, r4.xyxz +mad r3.xyz, r3.zzzz, cb0[11].xyzx, r3.xywx +dp3 r0.x, r3.xyzx, r3.xyzx +rsq r0.x, r0.x +mul r3.xyz, r0.xxxx, r3.xyzx +mul r0.x, r0.w, r0.w +div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x +mul r0.x, r0.x, cb0[3].z +mul r0.y, r0.z, l(0.050000) +mad r0.y, cb1[0].z, r0.y, l(1.000000) +mul r1.zw, r0.yyyy, cb1[0].xxxy +round_ne r1.zw, r1.zzzw +mad r4.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r4.xxxy, cb0[2].zzzw +mul r5.xy, r5.zzzz, r1.zwzz +mad r0.w, r0.z, l(0.050000), r0.y +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r1.z, r4.xyzx, r4.xyzx +dp3 r1.w, r3.xyzx, r4.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mul r4.xy, r0.wwww, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +mad r2.w, r0.z, l(0.050000), r0.w +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mul r4.yz, r2.wwww, cb1[0].xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +mad r0.z, r0.z, l(0.050000), r2.w +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r5.x, r4.yzwy, r4.yzwy +dp3 r4.y, r3.xyzx, r4.yzwy +rsq r4.z, r5.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.x, r0.x, l(1.000000) +mul r4.y, r4.z, r4.y +mad r3.w, r4.x, r3.w, r4.y +mul r4.xy, r0.zzzz, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r4.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r4.y, r4.w, r0.x, l(1.000000) +mad r3.w, r4.x, r4.y, r3.w +mul r4.xy, cb1[0].xyxx, l(0.707107, 0.707107, 0.000000, 0.000000) +mad r5.x, cb1[0].x, l(0.707107), -r4.y +add r5.y, r4.x, r4.y +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r4.z, r6.xyzx, r6.xyzx +dp3 r4.w, r3.xyzx, r6.xyzx +rsq r5.z, r4.z +mad_sat r4.w, r4.w, r5.z, -cb0[3].w +mad_sat r4.z, r4.z, r0.x, l(1.000000) +mul r4.z, r4.z, r4.w +mad r1.z, r1.w, r1.z, r4.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r1.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r1.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r1.w, r1.w, r0.x, l(1.000000) +mad r1.w, r4.z, r1.w, r3.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.000000), -cb1[0].y +mad r5.y, cb1[0].y, l(-0.000000), cb1[0].x +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.707107), -r4.y +mad r5.y, cb1[0].y, l(-0.707107), r4.x +mul r4.xy, r0.yyyy, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.x, r3.w, r1.z +mul r4.xy, r0.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r2.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r0.zzzz, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, -cb1[0].y, l(-0.000000), -cb1[0].x +mad r4.y, cb1[0].x, l(-0.000000), -cb1[0].y +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(-0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(-0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, cb1[0].x, l(0.000000), cb1[0].y +mad r4.y, cb1[0].y, l(0.000000), -cb1[0].x +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.y, r5.xyzx, r5.xyzx +dp3 r3.w, r3.xyzx, r5.xyzx +rsq r4.z, r0.y +mad_sat r3.w, r3.w, r4.z, -cb0[3].w +mad_sat r0.y, r0.y, r0.x, l(1.000000) +mad r0.y, r3.w, r0.y, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.w, r5.xyzx, r5.xyzx +dp3 r1.z, r3.xyzx, r5.xyzx +rsq r3.w, r0.w +mad_sat r1.z, r1.z, r3.w, -cb0[3].w +mad_sat r0.w, r0.w, r0.x, l(1.000000) +mad r0.w, r1.z, r0.w, r1.w +mul r1.zw, r2.wwww, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r5.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r1.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r1.z, r5.xyzx, r5.xyzx +dp3 r1.w, r3.xyzx, r5.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mad r0.w, r1.w, r1.z, r0.w +mul r1.zw, r0.zzzz, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r1.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.xy, cb0[2].xyxx, r1.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r1.xyxx +add r1.xyz, -r2.xyzx, r4.xyzx +dp3 r0.z, r1.xyzx, r1.xyzx +dp3 r1.x, r3.xyzx, r1.xyzx +rsq r1.y, r0.z +mad_sat r1.x, r1.x, r1.y, -cb0[3].w +mad_sat r0.x, r0.z, r0.x, l(1.000000) +mad r0.x, r1.x, r0.x, r0.w +mul r0.x, r0.x, cb0[4].y +mad r0.x, r0.y, cb0[4].x, r0.x +mul r0.x, r0.x, l(0.031250) +mad r0.y, r2.z, cb0[7].z, l(1.000000) +mul_sat r0.y, r0.y, cb0[7].w +dp2 r0.x, r0.xxxx, r0.yyyy +add_sat o0.x, -r0.x, l(1.000000) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_1_D3D11[] = +{ + 68, 88, 66, 67, 253, 108, + 42, 183, 71, 118, 156, 236, + 201, 27, 163, 248, 59, 65, + 9, 251, 1, 0, 0, 0, + 76, 66, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 140, 65, 0, 0, + 80, 0, 0, 0, 99, 16, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 89, 0, + 0, 4, 70, 142, 32, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 64, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 88, 24, 0, 4, 0, 112, + 16, 0, 1, 0, 0, 0, + 85, 85, 0, 0, 100, 32, + 0, 4, 50, 16, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 8, 0, 0, 0, 65, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 13, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 64, 0, 0, + 128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 56, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 62, 0, 0, + 128, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 14, 0, 0, 8, 130, 0, + 16, 0, 0, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 8, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 52, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 49, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 31, 0, 4, 3, + 42, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 18, 32, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 62, 0, + 0, 1, 21, 0, 0, 1, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 1, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 2, 0, + 0, 0, 166, 10, 16, 0, + 2, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 7, 0, + 0, 0, 27, 0, 0, 5, + 50, 0, 16, 0, 3, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 8, 194, 0, 16, 0, + 3, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 45, 0, 0, 137, 194, 0, + 0, 128, 67, 85, 21, 0, + 114, 0, 16, 0, 3, 0, + 0, 0, 70, 14, 16, 0, + 3, 0, 0, 0, 70, 126, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 11, 114, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 6, 128, 32, 0, + 0, 0, 0, 0, 13, 0, + 0, 0, 86, 133, 32, 0, + 0, 0, 0, 0, 13, 0, + 0, 0, 56, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 3, 0, 0, 0, 70, 130, + 32, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 50, 0, + 0, 10, 178, 0, 16, 0, + 3, 0, 0, 0, 6, 0, + 16, 0, 3, 0, 0, 0, + 70, 136, 32, 0, 0, 0, + 0, 0, 9, 0, 0, 0, + 70, 8, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 114, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 3, 0, 0, 0, 70, 130, + 32, 0, 0, 0, 0, 0, + 11, 0, 0, 0, 70, 3, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 114, 0, + 16, 0, 3, 0, 0, 0, + 6, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 14, 0, 0, 10, + 18, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 63, 0, 0, + 128, 63, 0, 0, 128, 63, + 0, 0, 128, 63, 10, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 8, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 50, 0, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 8, 194, 0, 16, 0, + 1, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 26, 0, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 8, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 58, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 8, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 129, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 5, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 50, 0, 0, 9, + 66, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 58, 0, 16, 0, 2, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 5, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 5, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 66, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 5, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 8, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 243, 4, + 53, 63, 243, 4, 53, 63, + 0, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 63, 26, 0, + 16, 128, 65, 0, 0, 0, + 4, 0, 0, 0, 0, 0, + 0, 7, 34, 0, 16, 0, + 5, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 12, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 34, 0, + 16, 0, 5, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 191, 26, 0, + 16, 128, 65, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 5, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 243, 4, 53, 191, + 10, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 13, + 18, 0, 16, 0, 4, 0, + 0, 0, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 187, 179, 10, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 12, 34, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 187, 179, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 8, 130, 0, + 16, 0, 3, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 245, 4, + 53, 191, 50, 0, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 241, 4, 53, 191, 58, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 15, 0, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 22, 133, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 241, 4, 53, 191, + 245, 4, 53, 191, 0, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 222, + 76, 50, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 12, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 222, 76, 50, 10, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 8, + 130, 0, 16, 0, 3, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 239, 4, 53, 191, 50, 0, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 247, 4, 53, 63, + 58, 0, 16, 128, 65, 0, + 0, 0, 3, 0, 0, 0, + 15, 0, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 22, 133, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 247, 4, + 53, 63, 239, 4, 53, 191, + 0, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 34, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 1, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 1, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 1, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 1, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 8, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 128, + 32, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 18, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 61, + 50, 0, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 2, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 7, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 32, + 0, 8, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 58, 128, 32, 0, 0, 0, + 0, 0, 7, 0, 0, 0, + 15, 0, 0, 7, 18, 0, + 16, 0, 0, 0, 0, 0, + 6, 0, 16, 0, 0, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 0, 32, + 0, 8, 18, 32, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 62, 0, 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[14], immediateIndexed +dcl_constantbuffer cb1[2], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2darray (float,float,float,float) t0 +dcl_resource_texture2dms(0) (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 8 +round_ni r0.xy, v0.xyxx +mad r0.xy, r0.xyxx, l(4.000000, 4.000000, 0.000000, 0.000000), cb1[1].xyxx +mul r0.zw, r0.xxxy, cb0[1].xxxy +mul r1.xy, r0.zwzz, l(0.250000, 0.250000, 0.000000, 0.000000) +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r2.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +div r0.z, cb0[3].x, r2.z +div r0.w, cb0[8].x, r0.z +max r0.w, r0.w, l(1.000000) +mul r0.z, r0.w, r0.z +lt r1.z, r0.z, l(1.000000) +if_nz r1.z + mov o0.x, l(1.000000) + ret +endif +mad r1.zw, cb0[2].xxxy, r1.xxxy, cb0[2].zzzw +mul r2.xy, r2.zzzz, r1.zwzz +add r0.xy, r0.xyxx, cb0[7].xyxx +ftoi r3.xy, r0.xyxx +mov r3.zw, l(0,0,0,0) +ldms_indexable(texture2dms)(float,float,float,float) r3.xyz, r3.xyzw, t1.xyzw, l(0) +mad r3.xyz, r3.xyzx, cb0[13].xxxx, cb0[13].yyyy +mul r4.xyz, r3.yyyy, cb0[10].xyzx +mad r3.xyw, r3.xxxx, cb0[9].xyxz, r4.xyxz +mad r3.xyz, r3.zzzz, cb0[11].xyzx, r3.xywx +dp3 r0.x, r3.xyzx, r3.xyzx +rsq r0.x, r0.x +mul r3.xyz, r0.xxxx, r3.xyzx +mul r0.x, r0.w, r0.w +div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x +mul r0.x, r0.x, cb0[3].z +mul r0.y, r0.z, l(0.050000) +mad r0.y, cb1[0].z, r0.y, l(1.000000) +mul r1.zw, r0.yyyy, cb1[0].xxxy +round_ne r1.zw, r1.zzzw +mad r4.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r4.xxxy, cb0[2].zzzw +mul r5.xy, r5.zzzz, r1.zwzz +mad r0.w, r0.z, l(0.050000), r0.y +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r1.z, r4.xyzx, r4.xyzx +dp3 r1.w, r3.xyzx, r4.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mul r4.xy, r0.wwww, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +mad r2.w, r0.z, l(0.050000), r0.w +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mul r4.yz, r2.wwww, cb1[0].xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +mad r0.z, r0.z, l(0.050000), r2.w +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r5.x, r4.yzwy, r4.yzwy +dp3 r4.y, r3.xyzx, r4.yzwy +rsq r4.z, r5.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.x, r0.x, l(1.000000) +mul r4.y, r4.z, r4.y +mad r3.w, r4.x, r3.w, r4.y +mul r4.xy, r0.zzzz, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r4.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r4.y, r4.w, r0.x, l(1.000000) +mad r3.w, r4.x, r4.y, r3.w +mul r4.xy, cb1[0].xyxx, l(0.707107, 0.707107, 0.000000, 0.000000) +mad r5.x, cb1[0].x, l(0.707107), -r4.y +add r5.y, r4.x, r4.y +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r4.z, r6.xyzx, r6.xyzx +dp3 r4.w, r3.xyzx, r6.xyzx +rsq r5.z, r4.z +mad_sat r4.w, r4.w, r5.z, -cb0[3].w +mad_sat r4.z, r4.z, r0.x, l(1.000000) +mul r4.z, r4.z, r4.w +mad r1.z, r1.w, r1.z, r4.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r1.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r1.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r1.w, r1.w, r0.x, l(1.000000) +mad r1.w, r4.z, r1.w, r3.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.000000), -cb1[0].y +mad r5.y, cb1[0].y, l(-0.000000), cb1[0].x +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.707107), -r4.y +mad r5.y, cb1[0].y, l(-0.707107), r4.x +mul r4.xy, r0.yyyy, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.x, r3.w, r1.z +mul r4.xy, r0.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r2.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r0.zzzz, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, -cb1[0].y, l(-0.000000), -cb1[0].x +mad r4.y, cb1[0].x, l(-0.000000), -cb1[0].y +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(-0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(-0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, cb1[0].x, l(0.000000), cb1[0].y +mad r4.y, cb1[0].y, l(0.000000), -cb1[0].x +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.y, r5.xyzx, r5.xyzx +dp3 r3.w, r3.xyzx, r5.xyzx +rsq r4.z, r0.y +mad_sat r3.w, r3.w, r4.z, -cb0[3].w +mad_sat r0.y, r0.y, r0.x, l(1.000000) +mad r0.y, r3.w, r0.y, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.w, r5.xyzx, r5.xyzx +dp3 r1.z, r3.xyzx, r5.xyzx +rsq r3.w, r0.w +mad_sat r1.z, r1.z, r3.w, -cb0[3].w +mad_sat r0.w, r0.w, r0.x, l(1.000000) +mad r0.w, r1.z, r0.w, r1.w +mul r1.zw, r2.wwww, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r5.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r1.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r1.z, r5.xyzx, r5.xyzx +dp3 r1.w, r3.xyzx, r5.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mad r0.w, r1.w, r1.z, r0.w +mul r1.zw, r0.zzzz, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r1.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.xy, cb0[2].xyxx, r1.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r1.xyxx +add r1.xyz, -r2.xyzx, r4.xyzx +dp3 r0.z, r1.xyzx, r1.xyzx +dp3 r1.x, r3.xyzx, r1.xyzx +rsq r1.y, r0.z +mad_sat r1.x, r1.x, r1.y, -cb0[3].w +mad_sat r0.x, r0.z, r0.x, l(1.000000) +mad r0.x, r1.x, r0.x, r0.w +mul r0.x, r0.x, cb0[4].y +mad r0.x, r0.y, cb0[4].x, r0.x +mul r0.x, r0.x, l(0.031250) +mad r0.y, r2.z, cb0[7].z, l(1.000000) +mul_sat r0.y, r0.y, cb0[7].w +dp2 r0.x, r0.xxxx, r0.yyyy +add_sat o0.x, -r0.x, l(1.000000) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_2_D3D11[] = +{ + 68, 88, 66, 67, 120, 9, + 160, 52, 45, 36, 136, 146, + 115, 243, 52, 1, 84, 216, + 207, 228, 1, 0, 0, 0, + 84, 66, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 148, 65, 0, 0, + 80, 0, 0, 0, 101, 16, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 89, 0, + 0, 4, 70, 142, 32, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 64, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 88, 32, 0, 4, 0, 112, + 16, 0, 1, 0, 0, 0, + 85, 85, 0, 0, 100, 32, + 0, 4, 50, 16, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 8, 0, 0, 0, 65, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 13, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 64, 0, 0, + 128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 56, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 62, 0, 0, + 128, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 14, 0, 0, 8, 130, 0, + 16, 0, 0, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 8, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 52, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 49, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 31, 0, 4, 3, + 42, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 18, 32, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 62, 0, + 0, 1, 21, 0, 0, 1, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 1, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 2, 0, + 0, 0, 166, 10, 16, 0, + 2, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 7, 0, + 0, 0, 27, 0, 0, 5, + 50, 0, 16, 0, 3, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 8, 194, 0, 16, 0, + 3, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 46, 0, 0, 139, 2, 1, + 0, 128, 67, 85, 21, 0, + 114, 0, 16, 0, 3, 0, + 0, 0, 70, 14, 16, 0, + 3, 0, 0, 0, 70, 126, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 114, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 6, 128, + 32, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 86, 133, + 32, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 56, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 3, 0, 0, 0, + 70, 130, 32, 0, 0, 0, + 0, 0, 10, 0, 0, 0, + 50, 0, 0, 10, 178, 0, + 16, 0, 3, 0, 0, 0, + 6, 0, 16, 0, 3, 0, + 0, 0, 70, 136, 32, 0, + 0, 0, 0, 0, 9, 0, + 0, 0, 70, 8, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 114, 0, 16, 0, + 3, 0, 0, 0, 166, 10, + 16, 0, 3, 0, 0, 0, + 70, 130, 32, 0, 0, 0, + 0, 0, 11, 0, 0, 0, + 70, 3, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 114, 0, 16, 0, 3, 0, + 0, 0, 6, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 18, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 14, 0, + 0, 10, 18, 0, 16, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 128, 63, + 0, 0, 128, 63, 0, 0, + 128, 63, 0, 0, 128, 63, + 10, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 8, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 34, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 50, 0, 0, 10, + 34, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 8, 194, 0, + 16, 0, 1, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 132, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 1, 0, + 0, 0, 166, 14, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 1, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 26, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 2, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 8, 50, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 70, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 2, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 58, 0, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 8, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 129, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 5, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 4, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 50, 0, + 0, 9, 66, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 58, 0, 16, 0, + 2, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 5, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 5, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 66, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 5, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 56, 0, + 0, 8, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 70, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 243, 4, 53, 63, 243, 4, + 53, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 243, 4, 53, 63, + 26, 0, 16, 128, 65, 0, + 0, 0, 4, 0, 0, 0, + 0, 0, 0, 7, 34, 0, + 16, 0, 5, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 7, 0, 0, 0, 166, 10, + 16, 0, 7, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 7, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 5, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 12, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 59, 179, 26, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 34, 0, 16, 0, 5, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 59, 179, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 7, 0, 0, 0, 166, 10, + 16, 0, 7, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 7, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 7, 0, 0, 0, 166, 10, + 16, 0, 7, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 7, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 7, 0, 0, 0, 166, 10, + 16, 0, 7, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 7, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 11, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 243, 4, 53, 191, + 26, 0, 16, 128, 65, 0, + 0, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 34, 0, + 16, 0, 5, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 243, 4, + 53, 191, 10, 0, 16, 0, + 4, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 13, 18, 0, 16, 0, + 4, 0, 0, 0, 26, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 187, 179, 10, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 12, + 34, 0, 16, 0, 4, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 187, 179, 26, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 8, + 130, 0, 16, 0, 3, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 245, 4, 53, 191, 50, 0, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 241, 4, 53, 191, + 58, 0, 16, 128, 65, 0, + 0, 0, 3, 0, 0, 0, + 15, 0, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 22, 133, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 241, 4, + 53, 191, 245, 4, 53, 191, + 0, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 222, 76, 50, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 12, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 222, 76, 50, + 10, 128, 32, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 130, 0, 16, 0, + 3, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 239, 4, 53, 191, + 50, 0, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 247, 4, + 53, 63, 58, 0, 16, 128, + 65, 0, 0, 0, 3, 0, + 0, 0, 15, 0, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 22, 133, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 247, 4, 53, 63, 239, 4, + 53, 191, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 34, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 1, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 1, 0, + 0, 0, 166, 14, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 1, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 2, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 1, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 1, 0, + 0, 0, 166, 14, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 1, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 1, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 18, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 8, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 26, 128, 32, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 18, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 10, 128, 32, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 61, 50, 0, 0, 10, + 34, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 2, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 32, 0, 8, 34, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 58, 128, 32, 0, + 0, 0, 0, 0, 7, 0, + 0, 0, 15, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 6, 0, 16, 0, + 0, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 0, 32, 0, 8, 18, 32, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 62, 0, 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[9], immediateIndexed +dcl_constantbuffer cb1[2], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2darray (float,float,float,float) t0 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 8 +round_ni r0.xy, v0.xyxx +mad r0.xy, r0.xyxx, l(4.000000, 4.000000, 0.000000, 0.000000), cb1[1].xyxx +mul r0.zw, r0.xxxy, cb0[1].xxxy +mul r1.xy, r0.zwzz, l(0.250000, 0.250000, 0.000000, 0.000000) +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r2.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +div r0.z, cb0[3].x, r2.z +div r0.w, cb0[8].y, r0.z +min r0.w, r0.w, l(1.000000) +mul r0.z, r0.w, r0.z +lt r1.z, r0.z, l(1.000000) +if_nz r1.z + mov o0.x, l(1.000000) + ret +endif +mad r1.zw, cb0[2].xxxy, r1.xxxy, cb0[2].zzzw +mul r2.xy, r2.zzzz, r1.zwzz +ftoi r3.xy, r0.xyxx +mov r3.zw, l(0,0,0,0) +ld_indexable(texture2d)(float,float,float,float) r3.xyz, r3.xyzw, t1.xyzw +mad r3.xyz, r3.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000) +mul r0.x, r0.w, r0.w +div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x +mul r0.x, r0.x, cb0[3].z +mul r0.y, r0.z, l(0.050000) +mad r0.y, cb1[0].z, r0.y, l(1.000000) +mul r1.zw, r0.yyyy, cb1[0].xxxy +round_ne r1.zw, r1.zzzw +mad r4.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r4.xxxy, cb0[2].zzzw +mul r5.xy, r5.zzzz, r1.zwzz +mad r0.w, r0.z, l(0.050000), r0.y +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r1.z, r4.xyzx, r4.xyzx +dp3 r1.w, r3.xyzx, r4.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mul r4.xy, r0.wwww, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +mad r2.w, r0.z, l(0.050000), r0.w +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mul r4.yz, r2.wwww, cb1[0].xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +mad r0.z, r0.z, l(0.050000), r2.w +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r5.x, r4.yzwy, r4.yzwy +dp3 r4.y, r3.xyzx, r4.yzwy +rsq r4.z, r5.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.x, r0.x, l(1.000000) +mul r4.y, r4.z, r4.y +mad r3.w, r4.x, r3.w, r4.y +mul r4.xy, r0.zzzz, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r4.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r4.y, r4.w, r0.x, l(1.000000) +mad r3.w, r4.x, r4.y, r3.w +mul r4.xy, cb1[0].xyxx, l(0.707107, 0.707107, 0.000000, 0.000000) +mad r5.x, cb1[0].x, l(0.707107), -r4.y +add r5.y, r4.x, r4.y +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r4.z, r6.xyzx, r6.xyzx +dp3 r4.w, r3.xyzx, r6.xyzx +rsq r5.z, r4.z +mad_sat r4.w, r4.w, r5.z, -cb0[3].w +mad_sat r4.z, r4.z, r0.x, l(1.000000) +mul r4.z, r4.z, r4.w +mad r1.z, r1.w, r1.z, r4.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r1.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r1.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r1.w, r1.w, r0.x, l(1.000000) +mad r1.w, r4.z, r1.w, r3.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.000000), -cb1[0].y +mad r5.y, cb1[0].y, l(-0.000000), cb1[0].x +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.707107), -r4.y +mad r5.y, cb1[0].y, l(-0.707107), r4.x +mul r4.xy, r0.yyyy, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.x, r3.w, r1.z +mul r4.xy, r0.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r2.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r0.zzzz, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, -cb1[0].y, l(-0.000000), -cb1[0].x +mad r4.y, cb1[0].x, l(-0.000000), -cb1[0].y +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(-0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(-0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, cb1[0].x, l(0.000000), cb1[0].y +mad r4.y, cb1[0].y, l(0.000000), -cb1[0].x +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.y, r5.xyzx, r5.xyzx +dp3 r3.w, r3.xyzx, r5.xyzx +rsq r4.z, r0.y +mad_sat r3.w, r3.w, r4.z, -cb0[3].w +mad_sat r0.y, r0.y, r0.x, l(1.000000) +mad r0.y, r3.w, r0.y, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.w, r5.xyzx, r5.xyzx +dp3 r1.z, r3.xyzx, r5.xyzx +rsq r3.w, r0.w +mad_sat r1.z, r1.z, r3.w, -cb0[3].w +mad_sat r0.w, r0.w, r0.x, l(1.000000) +mad r0.w, r1.z, r0.w, r1.w +mul r1.zw, r2.wwww, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r5.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r1.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r1.z, r5.xyzx, r5.xyzx +dp3 r1.w, r3.xyzx, r5.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mad r0.w, r1.w, r1.z, r0.w +mul r1.zw, r0.zzzz, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r1.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.xy, cb0[2].xyxx, r1.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r1.xyxx +add r1.xyz, -r2.xyzx, r4.xyzx +dp3 r0.z, r1.xyzx, r1.xyzx +dp3 r1.x, r3.xyzx, r1.xyzx +rsq r1.y, r0.z +mad_sat r1.x, r1.x, r1.y, -cb0[3].w +mad_sat r0.x, r0.z, r0.x, l(1.000000) +mad r0.x, r1.x, r0.x, r0.w +mul r0.x, r0.x, cb0[4].y +mad r0.x, r0.y, cb0[4].x, r0.x +mad_sat o0.x, -r0.x, l(0.062500), l(1.000000) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_0_D3D11[] = +{ + 68, 88, 66, 67, 152, 200, + 3, 149, 6, 47, 84, 25, + 140, 28, 132, 233, 76, 40, + 244, 249, 1, 0, 0, 0, + 8, 65, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 72, 64, 0, 0, + 80, 0, 0, 0, 18, 16, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 89, 0, + 0, 4, 70, 142, 32, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 64, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 88, 24, 0, 4, 0, 112, + 16, 0, 1, 0, 0, 0, + 85, 85, 0, 0, 100, 32, + 0, 4, 50, 16, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 8, 0, 0, 0, 65, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 13, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 64, 0, 0, + 128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 56, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 62, 0, 0, + 128, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 14, 0, 0, 8, 130, 0, + 16, 0, 0, 0, 0, 0, + 26, 128, 32, 0, 0, 0, + 0, 0, 8, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 51, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 49, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 31, 0, 4, 3, + 42, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 18, 32, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 62, 0, + 0, 1, 21, 0, 0, 1, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 1, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 2, 0, + 0, 0, 166, 10, 16, 0, + 2, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 27, 0, 0, 5, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 54, 0, 0, 8, + 194, 0, 16, 0, 3, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 45, 0, + 0, 137, 194, 0, 0, 128, + 67, 85, 21, 0, 114, 0, + 16, 0, 3, 0, 0, 0, + 70, 14, 16, 0, 3, 0, + 0, 0, 70, 126, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 15, 114, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 0, 64, 0, 0, 0, 64, + 0, 0, 0, 64, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 191, 0, 0, + 128, 191, 0, 0, 128, 191, + 0, 0, 0, 0, 56, 0, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 14, 0, 0, 10, + 18, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 63, 0, 0, + 128, 63, 0, 0, 128, 63, + 0, 0, 128, 63, 10, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 8, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 50, 0, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 8, 194, 0, 16, 0, + 1, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 26, 0, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 8, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 58, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 8, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 129, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 5, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 50, 0, 0, 9, + 66, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 58, 0, 16, 0, 2, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 5, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 5, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 66, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 5, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 8, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 243, 4, + 53, 63, 243, 4, 53, 63, + 0, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 63, 26, 0, + 16, 128, 65, 0, 0, 0, + 4, 0, 0, 0, 0, 0, + 0, 7, 34, 0, 16, 0, + 5, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 12, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 34, 0, + 16, 0, 5, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 191, 26, 0, + 16, 128, 65, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 5, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 243, 4, 53, 191, + 10, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 13, + 18, 0, 16, 0, 4, 0, + 0, 0, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 187, 179, 10, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 12, 34, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 187, 179, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 8, 130, 0, + 16, 0, 3, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 245, 4, + 53, 191, 50, 0, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 241, 4, 53, 191, 58, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 15, 0, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 22, 133, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 241, 4, 53, 191, + 245, 4, 53, 191, 0, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 222, + 76, 50, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 12, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 222, 76, 50, 10, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 8, + 130, 0, 16, 0, 3, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 239, 4, 53, 191, 50, 0, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 247, 4, 53, 63, + 58, 0, 16, 128, 65, 0, + 0, 0, 3, 0, 0, 0, + 15, 0, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 22, 133, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 247, 4, + 53, 63, 239, 4, 53, 191, + 0, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 34, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 1, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 1, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 1, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 1, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 8, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 128, + 32, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 18, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 50, 32, 0, 10, + 18, 32, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 61, 1, 64, + 0, 0, 0, 0, 128, 63, + 62, 0, 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[14], immediateIndexed +dcl_constantbuffer cb1[2], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2darray (float,float,float,float) t0 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 8 +round_ni r0.xy, v0.xyxx +mad r0.xy, r0.xyxx, l(4.000000, 4.000000, 0.000000, 0.000000), cb1[1].xyxx +mul r0.zw, r0.xxxy, cb0[1].xxxy +mul r1.xy, r0.zwzz, l(0.250000, 0.250000, 0.000000, 0.000000) +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r2.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +div r0.z, cb0[3].x, r2.z +div r0.w, cb0[8].y, r0.z +min r0.w, r0.w, l(1.000000) +mul r0.z, r0.w, r0.z +lt r1.z, r0.z, l(1.000000) +if_nz r1.z + mov o0.x, l(1.000000) + ret +endif +mad r1.zw, cb0[2].xxxy, r1.xxxy, cb0[2].zzzw +mul r2.xy, r2.zzzz, r1.zwzz +add r0.xy, r0.xyxx, cb0[7].xyxx +ftoi r3.xy, r0.xyxx +mov r3.zw, l(0,0,0,0) +ld_indexable(texture2d)(float,float,float,float) r3.xyz, r3.xyzw, t1.xyzw +mad r3.xyz, r3.xyzx, cb0[13].xxxx, cb0[13].yyyy +mul r4.xyz, r3.yyyy, cb0[10].xyzx +mad r3.xyw, r3.xxxx, cb0[9].xyxz, r4.xyxz +mad r3.xyz, r3.zzzz, cb0[11].xyzx, r3.xywx +dp3 r0.x, r3.xyzx, r3.xyzx +rsq r0.x, r0.x +mul r3.xyz, r0.xxxx, r3.xyzx +mul r0.x, r0.w, r0.w +div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x +mul r0.x, r0.x, cb0[3].z +mul r0.y, r0.z, l(0.050000) +mad r0.y, cb1[0].z, r0.y, l(1.000000) +mul r1.zw, r0.yyyy, cb1[0].xxxy +round_ne r1.zw, r1.zzzw +mad r4.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r4.xxxy, cb0[2].zzzw +mul r5.xy, r5.zzzz, r1.zwzz +mad r0.w, r0.z, l(0.050000), r0.y +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r1.z, r4.xyzx, r4.xyzx +dp3 r1.w, r3.xyzx, r4.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mul r4.xy, r0.wwww, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +mad r2.w, r0.z, l(0.050000), r0.w +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mul r4.yz, r2.wwww, cb1[0].xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +mad r0.z, r0.z, l(0.050000), r2.w +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r5.x, r4.yzwy, r4.yzwy +dp3 r4.y, r3.xyzx, r4.yzwy +rsq r4.z, r5.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.x, r0.x, l(1.000000) +mul r4.y, r4.z, r4.y +mad r3.w, r4.x, r3.w, r4.y +mul r4.xy, r0.zzzz, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r4.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r4.y, r4.w, r0.x, l(1.000000) +mad r3.w, r4.x, r4.y, r3.w +mul r4.xy, cb1[0].xyxx, l(0.707107, 0.707107, 0.000000, 0.000000) +mad r5.x, cb1[0].x, l(0.707107), -r4.y +add r5.y, r4.x, r4.y +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r4.z, r6.xyzx, r6.xyzx +dp3 r4.w, r3.xyzx, r6.xyzx +rsq r5.z, r4.z +mad_sat r4.w, r4.w, r5.z, -cb0[3].w +mad_sat r4.z, r4.z, r0.x, l(1.000000) +mul r4.z, r4.z, r4.w +mad r1.z, r1.w, r1.z, r4.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r1.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r1.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r1.w, r1.w, r0.x, l(1.000000) +mad r1.w, r4.z, r1.w, r3.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.000000), -cb1[0].y +mad r5.y, cb1[0].y, l(-0.000000), cb1[0].x +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.707107), -r4.y +mad r5.y, cb1[0].y, l(-0.707107), r4.x +mul r4.xy, r0.yyyy, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.x, r3.w, r1.z +mul r4.xy, r0.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r2.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r0.zzzz, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, -cb1[0].y, l(-0.000000), -cb1[0].x +mad r4.y, cb1[0].x, l(-0.000000), -cb1[0].y +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(-0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(-0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, cb1[0].x, l(0.000000), cb1[0].y +mad r4.y, cb1[0].y, l(0.000000), -cb1[0].x +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.y, r5.xyzx, r5.xyzx +dp3 r3.w, r3.xyzx, r5.xyzx +rsq r4.z, r0.y +mad_sat r3.w, r3.w, r4.z, -cb0[3].w +mad_sat r0.y, r0.y, r0.x, l(1.000000) +mad r0.y, r3.w, r0.y, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.w, r5.xyzx, r5.xyzx +dp3 r1.z, r3.xyzx, r5.xyzx +rsq r3.w, r0.w +mad_sat r1.z, r1.z, r3.w, -cb0[3].w +mad_sat r0.w, r0.w, r0.x, l(1.000000) +mad r0.w, r1.z, r0.w, r1.w +mul r1.zw, r2.wwww, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r5.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r1.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r1.z, r5.xyzx, r5.xyzx +dp3 r1.w, r3.xyzx, r5.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mad r0.w, r1.w, r1.z, r0.w +mul r1.zw, r0.zzzz, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r1.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.xy, cb0[2].xyxx, r1.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r1.xyxx +add r1.xyz, -r2.xyzx, r4.xyzx +dp3 r0.z, r1.xyzx, r1.xyzx +dp3 r1.x, r3.xyzx, r1.xyzx +rsq r1.y, r0.z +mad_sat r1.x, r1.x, r1.y, -cb0[3].w +mad_sat r0.x, r0.z, r0.x, l(1.000000) +mad r0.x, r1.x, r0.x, r0.w +mul r0.x, r0.x, cb0[4].y +mad r0.x, r0.y, cb0[4].x, r0.x +mad_sat o0.x, -r0.x, l(0.062500), l(1.000000) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_1_D3D11[] = +{ + 68, 88, 66, 67, 61, 208, + 68, 127, 115, 241, 28, 57, + 137, 94, 170, 144, 114, 98, + 131, 90, 1, 0, 0, 0, + 212, 65, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 20, 65, 0, 0, + 80, 0, 0, 0, 69, 16, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 89, 0, + 0, 4, 70, 142, 32, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 64, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 88, 24, 0, 4, 0, 112, + 16, 0, 1, 0, 0, 0, + 85, 85, 0, 0, 100, 32, + 0, 4, 50, 16, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 8, 0, 0, 0, 65, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 13, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 64, 0, 0, + 128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 56, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 62, 0, 0, + 128, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 14, 0, 0, 8, 130, 0, + 16, 0, 0, 0, 0, 0, + 26, 128, 32, 0, 0, 0, + 0, 0, 8, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 51, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 49, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 31, 0, 4, 3, + 42, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 18, 32, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 62, 0, + 0, 1, 21, 0, 0, 1, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 1, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 2, 0, + 0, 0, 166, 10, 16, 0, + 2, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 7, 0, + 0, 0, 27, 0, 0, 5, + 50, 0, 16, 0, 3, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 8, 194, 0, 16, 0, + 3, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 45, 0, 0, 137, 194, 0, + 0, 128, 67, 85, 21, 0, + 114, 0, 16, 0, 3, 0, + 0, 0, 70, 14, 16, 0, + 3, 0, 0, 0, 70, 126, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 11, 114, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 6, 128, 32, 0, + 0, 0, 0, 0, 13, 0, + 0, 0, 86, 133, 32, 0, + 0, 0, 0, 0, 13, 0, + 0, 0, 56, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 3, 0, 0, 0, 70, 130, + 32, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 50, 0, + 0, 10, 178, 0, 16, 0, + 3, 0, 0, 0, 6, 0, + 16, 0, 3, 0, 0, 0, + 70, 136, 32, 0, 0, 0, + 0, 0, 9, 0, 0, 0, + 70, 8, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 114, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 3, 0, 0, 0, 70, 130, + 32, 0, 0, 0, 0, 0, + 11, 0, 0, 0, 70, 3, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 114, 0, + 16, 0, 3, 0, 0, 0, + 6, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 14, 0, 0, 10, + 18, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 63, 0, 0, + 128, 63, 0, 0, 128, 63, + 0, 0, 128, 63, 10, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 8, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 50, 0, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 8, 194, 0, 16, 0, + 1, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 26, 0, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 8, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 58, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 8, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 129, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 5, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 50, 0, 0, 9, + 66, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 58, 0, 16, 0, 2, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 5, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 5, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 66, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 5, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 8, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 243, 4, + 53, 63, 243, 4, 53, 63, + 0, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 63, 26, 0, + 16, 128, 65, 0, 0, 0, + 4, 0, 0, 0, 0, 0, + 0, 7, 34, 0, 16, 0, + 5, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 12, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 34, 0, + 16, 0, 5, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 191, 26, 0, + 16, 128, 65, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 5, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 243, 4, 53, 191, + 10, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 13, + 18, 0, 16, 0, 4, 0, + 0, 0, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 187, 179, 10, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 12, 34, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 187, 179, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 8, 130, 0, + 16, 0, 3, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 245, 4, + 53, 191, 50, 0, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 241, 4, 53, 191, 58, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 15, 0, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 22, 133, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 241, 4, 53, 191, + 245, 4, 53, 191, 0, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 222, + 76, 50, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 12, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 222, 76, 50, 10, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 8, + 130, 0, 16, 0, 3, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 239, 4, 53, 191, 50, 0, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 247, 4, 53, 63, + 58, 0, 16, 128, 65, 0, + 0, 0, 3, 0, 0, 0, + 15, 0, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 22, 133, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 247, 4, + 53, 63, 239, 4, 53, 191, + 0, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 34, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 1, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 1, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 1, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 1, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 8, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 128, + 32, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 18, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 50, 32, 0, 10, + 18, 32, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 61, 1, 64, + 0, 0, 0, 0, 128, 63, + 62, 0, 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[14], immediateIndexed +dcl_constantbuffer cb1[2], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2darray (float,float,float,float) t0 +dcl_resource_texture2dms(0) (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 8 +round_ni r0.xy, v0.xyxx +mad r0.xy, r0.xyxx, l(4.000000, 4.000000, 0.000000, 0.000000), cb1[1].xyxx +mul r0.zw, r0.xxxy, cb0[1].xxxy +mul r1.xy, r0.zwzz, l(0.250000, 0.250000, 0.000000, 0.000000) +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r2.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +div r0.z, cb0[3].x, r2.z +div r0.w, cb0[8].y, r0.z +min r0.w, r0.w, l(1.000000) +mul r0.z, r0.w, r0.z +lt r1.z, r0.z, l(1.000000) +if_nz r1.z + mov o0.x, l(1.000000) + ret +endif +mad r1.zw, cb0[2].xxxy, r1.xxxy, cb0[2].zzzw +mul r2.xy, r2.zzzz, r1.zwzz +add r0.xy, r0.xyxx, cb0[7].xyxx +ftoi r3.xy, r0.xyxx +mov r3.zw, l(0,0,0,0) +ldms_indexable(texture2dms)(float,float,float,float) r3.xyz, r3.xyzw, t1.xyzw, l(0) +mad r3.xyz, r3.xyzx, cb0[13].xxxx, cb0[13].yyyy +mul r4.xyz, r3.yyyy, cb0[10].xyzx +mad r3.xyw, r3.xxxx, cb0[9].xyxz, r4.xyxz +mad r3.xyz, r3.zzzz, cb0[11].xyzx, r3.xywx +dp3 r0.x, r3.xyzx, r3.xyzx +rsq r0.x, r0.x +mul r3.xyz, r0.xxxx, r3.xyzx +mul r0.x, r0.w, r0.w +div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x +mul r0.x, r0.x, cb0[3].z +mul r0.y, r0.z, l(0.050000) +mad r0.y, cb1[0].z, r0.y, l(1.000000) +mul r1.zw, r0.yyyy, cb1[0].xxxy +round_ne r1.zw, r1.zzzw +mad r4.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r4.xxxy, cb0[2].zzzw +mul r5.xy, r5.zzzz, r1.zwzz +mad r0.w, r0.z, l(0.050000), r0.y +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r1.z, r4.xyzx, r4.xyzx +dp3 r1.w, r3.xyzx, r4.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mul r4.xy, r0.wwww, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +mad r2.w, r0.z, l(0.050000), r0.w +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mul r4.yz, r2.wwww, cb1[0].xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +mad r0.z, r0.z, l(0.050000), r2.w +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r5.x, r4.yzwy, r4.yzwy +dp3 r4.y, r3.xyzx, r4.yzwy +rsq r4.z, r5.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.x, r0.x, l(1.000000) +mul r4.y, r4.z, r4.y +mad r3.w, r4.x, r3.w, r4.y +mul r4.xy, r0.zzzz, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r4.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r4.y, r4.w, r0.x, l(1.000000) +mad r3.w, r4.x, r4.y, r3.w +mul r4.xy, cb1[0].xyxx, l(0.707107, 0.707107, 0.000000, 0.000000) +mad r5.x, cb1[0].x, l(0.707107), -r4.y +add r5.y, r4.x, r4.y +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r4.z, r6.xyzx, r6.xyzx +dp3 r4.w, r3.xyzx, r6.xyzx +rsq r5.z, r4.z +mad_sat r4.w, r4.w, r5.z, -cb0[3].w +mad_sat r4.z, r4.z, r0.x, l(1.000000) +mul r4.z, r4.z, r4.w +mad r1.z, r1.w, r1.z, r4.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r1.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r1.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r1.w, r1.w, r0.x, l(1.000000) +mad r1.w, r4.z, r1.w, r3.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.000000), -cb1[0].y +mad r5.y, cb1[0].y, l(-0.000000), cb1[0].x +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.707107), -r4.y +mad r5.y, cb1[0].y, l(-0.707107), r4.x +mul r4.xy, r0.yyyy, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.x, r3.w, r1.z +mul r4.xy, r0.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r2.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r0.zzzz, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, -cb1[0].y, l(-0.000000), -cb1[0].x +mad r4.y, cb1[0].x, l(-0.000000), -cb1[0].y +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(-0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(-0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, cb1[0].x, l(0.000000), cb1[0].y +mad r4.y, cb1[0].y, l(0.000000), -cb1[0].x +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.y, r5.xyzx, r5.xyzx +dp3 r3.w, r3.xyzx, r5.xyzx +rsq r4.z, r0.y +mad_sat r3.w, r3.w, r4.z, -cb0[3].w +mad_sat r0.y, r0.y, r0.x, l(1.000000) +mad r0.y, r3.w, r0.y, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.w, r5.xyzx, r5.xyzx +dp3 r1.z, r3.xyzx, r5.xyzx +rsq r3.w, r0.w +mad_sat r1.z, r1.z, r3.w, -cb0[3].w +mad_sat r0.w, r0.w, r0.x, l(1.000000) +mad r0.w, r1.z, r0.w, r1.w +mul r1.zw, r2.wwww, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r5.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r1.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r1.z, r5.xyzx, r5.xyzx +dp3 r1.w, r3.xyzx, r5.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mad r0.w, r1.w, r1.z, r0.w +mul r1.zw, r0.zzzz, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r1.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.xy, cb0[2].xyxx, r1.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r1.xyxx +add r1.xyz, -r2.xyzx, r4.xyzx +dp3 r0.z, r1.xyzx, r1.xyzx +dp3 r1.x, r3.xyzx, r1.xyzx +rsq r1.y, r0.z +mad_sat r1.x, r1.x, r1.y, -cb0[3].w +mad_sat r0.x, r0.z, r0.x, l(1.000000) +mad r0.x, r1.x, r0.x, r0.w +mul r0.x, r0.x, cb0[4].y +mad r0.x, r0.y, cb0[4].x, r0.x +mad_sat o0.x, -r0.x, l(0.062500), l(1.000000) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_2_D3D11[] = +{ + 68, 88, 66, 67, 52, 99, + 104, 16, 25, 157, 17, 152, + 22, 176, 154, 193, 119, 77, + 177, 35, 1, 0, 0, 0, + 220, 65, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 28, 65, 0, 0, + 80, 0, 0, 0, 71, 16, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 89, 0, + 0, 4, 70, 142, 32, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 64, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 88, 32, 0, 4, 0, 112, + 16, 0, 1, 0, 0, 0, + 85, 85, 0, 0, 100, 32, + 0, 4, 50, 16, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 8, 0, 0, 0, 65, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 13, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 64, 0, 0, + 128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 56, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 62, 0, 0, + 128, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 14, 0, 0, 8, 130, 0, + 16, 0, 0, 0, 0, 0, + 26, 128, 32, 0, 0, 0, + 0, 0, 8, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 51, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 49, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 31, 0, 4, 3, + 42, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 18, 32, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 62, 0, + 0, 1, 21, 0, 0, 1, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 1, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 2, 0, + 0, 0, 166, 10, 16, 0, + 2, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 7, 0, + 0, 0, 27, 0, 0, 5, + 50, 0, 16, 0, 3, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 8, 194, 0, 16, 0, + 3, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 46, 0, 0, 139, 2, 1, + 0, 128, 67, 85, 21, 0, + 114, 0, 16, 0, 3, 0, + 0, 0, 70, 14, 16, 0, + 3, 0, 0, 0, 70, 126, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 114, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 6, 128, + 32, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 86, 133, + 32, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 56, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 3, 0, 0, 0, + 70, 130, 32, 0, 0, 0, + 0, 0, 10, 0, 0, 0, + 50, 0, 0, 10, 178, 0, + 16, 0, 3, 0, 0, 0, + 6, 0, 16, 0, 3, 0, + 0, 0, 70, 136, 32, 0, + 0, 0, 0, 0, 9, 0, + 0, 0, 70, 8, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 114, 0, 16, 0, + 3, 0, 0, 0, 166, 10, + 16, 0, 3, 0, 0, 0, + 70, 130, 32, 0, 0, 0, + 0, 0, 11, 0, 0, 0, + 70, 3, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 114, 0, 16, 0, 3, 0, + 0, 0, 6, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 18, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 14, 0, + 0, 10, 18, 0, 16, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 128, 63, + 0, 0, 128, 63, 0, 0, + 128, 63, 0, 0, 128, 63, + 10, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 8, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 34, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 50, 0, 0, 10, + 34, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 8, 194, 0, + 16, 0, 1, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 132, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 1, 0, + 0, 0, 166, 14, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 1, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 26, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 2, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 8, 50, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 70, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 2, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 58, 0, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 8, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 129, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 5, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 4, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 50, 0, + 0, 9, 66, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 58, 0, 16, 0, + 2, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 5, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 5, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 66, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 5, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 56, 0, + 0, 8, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 70, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 243, 4, 53, 63, 243, 4, + 53, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 243, 4, 53, 63, + 26, 0, 16, 128, 65, 0, + 0, 0, 4, 0, 0, 0, + 0, 0, 0, 7, 34, 0, + 16, 0, 5, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 7, 0, 0, 0, 166, 10, + 16, 0, 7, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 7, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 5, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 12, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 59, 179, 26, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 34, 0, 16, 0, 5, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 59, 179, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 7, 0, 0, 0, 166, 10, + 16, 0, 7, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 7, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 7, 0, 0, 0, 166, 10, + 16, 0, 7, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 7, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 7, 0, 0, 0, 166, 10, + 16, 0, 7, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 7, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 11, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 243, 4, 53, 191, + 26, 0, 16, 128, 65, 0, + 0, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 34, 0, + 16, 0, 5, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 243, 4, + 53, 191, 10, 0, 16, 0, + 4, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 13, 18, 0, 16, 0, + 4, 0, 0, 0, 26, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 187, 179, 10, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 12, + 34, 0, 16, 0, 4, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 187, 179, 26, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 8, + 130, 0, 16, 0, 3, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 245, 4, 53, 191, 50, 0, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 241, 4, 53, 191, + 58, 0, 16, 128, 65, 0, + 0, 0, 3, 0, 0, 0, + 15, 0, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 22, 133, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 241, 4, + 53, 191, 245, 4, 53, 191, + 0, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 222, 76, 50, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 12, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 222, 76, 50, + 10, 128, 32, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 130, 0, 16, 0, + 3, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 239, 4, 53, 191, + 50, 0, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 247, 4, + 53, 63, 58, 0, 16, 128, + 65, 0, 0, 0, 3, 0, + 0, 0, 15, 0, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 22, 133, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 247, 4, 53, 63, 239, 4, + 53, 191, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 34, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 1, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 1, 0, + 0, 0, 166, 14, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 1, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 2, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 1, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 1, 0, + 0, 0, 166, 14, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 1, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 1, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 18, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 8, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 26, 128, 32, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 18, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 10, 128, 32, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 50, 32, + 0, 10, 18, 32, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 61, + 1, 64, 0, 0, 0, 0, + 128, 63, 62, 0, 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[9], immediateIndexed +dcl_constantbuffer cb1[2], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2darray (float,float,float,float) t0 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 8 +round_ni r0.xy, v0.xyxx +mad r0.xy, r0.xyxx, l(4.000000, 4.000000, 0.000000, 0.000000), cb1[1].xyxx +mul r0.zw, r0.xxxy, cb0[1].xxxy +mul r1.xy, r0.zwzz, l(0.250000, 0.250000, 0.000000, 0.000000) +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r2.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +div r0.z, cb0[3].x, r2.z +div r0.w, cb0[8].y, r0.z +min r0.w, r0.w, l(1.000000) +mul r0.z, r0.w, r0.z +lt r1.z, r0.z, l(1.000000) +if_nz r1.z + mov o0.x, l(1.000000) + ret +endif +mad r1.zw, cb0[2].xxxy, r1.xxxy, cb0[2].zzzw +mul r2.xy, r2.zzzz, r1.zwzz +ftoi r3.xy, r0.xyxx +mov r3.zw, l(0,0,0,0) +ld_indexable(texture2d)(float,float,float,float) r3.xyz, r3.xyzw, t1.xyzw +mad r3.xyz, r3.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000) +mul r0.x, r0.w, r0.w +div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x +mul r0.x, r0.x, cb0[3].z +mul r0.y, r0.z, l(0.050000) +mad r0.y, cb1[0].z, r0.y, l(1.000000) +mul r1.zw, r0.yyyy, cb1[0].xxxy +round_ne r1.zw, r1.zzzw +mad r4.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r4.xxxy, cb0[2].zzzw +mul r5.xy, r5.zzzz, r1.zwzz +mad r0.w, r0.z, l(0.050000), r0.y +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r1.z, r4.xyzx, r4.xyzx +dp3 r1.w, r3.xyzx, r4.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mul r4.xy, r0.wwww, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +mad r2.w, r0.z, l(0.050000), r0.w +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mul r4.yz, r2.wwww, cb1[0].xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +mad r0.z, r0.z, l(0.050000), r2.w +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r5.x, r4.yzwy, r4.yzwy +dp3 r4.y, r3.xyzx, r4.yzwy +rsq r4.z, r5.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.x, r0.x, l(1.000000) +mul r4.y, r4.z, r4.y +mad r3.w, r4.x, r3.w, r4.y +mul r4.xy, r0.zzzz, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r4.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r4.y, r4.w, r0.x, l(1.000000) +mad r3.w, r4.x, r4.y, r3.w +mul r4.xy, cb1[0].xyxx, l(0.707107, 0.707107, 0.000000, 0.000000) +mad r5.x, cb1[0].x, l(0.707107), -r4.y +add r5.y, r4.x, r4.y +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r4.z, r6.xyzx, r6.xyzx +dp3 r4.w, r3.xyzx, r6.xyzx +rsq r5.z, r4.z +mad_sat r4.w, r4.w, r5.z, -cb0[3].w +mad_sat r4.z, r4.z, r0.x, l(1.000000) +mul r4.z, r4.z, r4.w +mad r1.z, r1.w, r1.z, r4.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r1.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r1.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r1.w, r1.w, r0.x, l(1.000000) +mad r1.w, r4.z, r1.w, r3.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.000000), -cb1[0].y +mad r5.y, cb1[0].y, l(-0.000000), cb1[0].x +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.707107), -r4.y +mad r5.y, cb1[0].y, l(-0.707107), r4.x +mul r4.xy, r0.yyyy, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.x, r3.w, r1.z +mul r4.xy, r0.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r2.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r0.zzzz, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, -cb1[0].y, l(-0.000000), -cb1[0].x +mad r4.y, cb1[0].x, l(-0.000000), -cb1[0].y +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(-0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(-0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, cb1[0].x, l(0.000000), cb1[0].y +mad r4.y, cb1[0].y, l(0.000000), -cb1[0].x +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.y, r5.xyzx, r5.xyzx +dp3 r3.w, r3.xyzx, r5.xyzx +rsq r4.z, r0.y +mad_sat r3.w, r3.w, r4.z, -cb0[3].w +mad_sat r0.y, r0.y, r0.x, l(1.000000) +mad r0.y, r3.w, r0.y, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.w, r5.xyzx, r5.xyzx +dp3 r1.z, r3.xyzx, r5.xyzx +rsq r3.w, r0.w +mad_sat r1.z, r1.z, r3.w, -cb0[3].w +mad_sat r0.w, r0.w, r0.x, l(1.000000) +mad r0.w, r1.z, r0.w, r1.w +mul r1.zw, r2.wwww, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r5.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r1.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r1.z, r5.xyzx, r5.xyzx +dp3 r1.w, r3.xyzx, r5.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mad r0.w, r1.w, r1.z, r0.w +mul r1.zw, r0.zzzz, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r1.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.xy, cb0[2].xyxx, r1.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r1.xyxx +add r1.xyz, -r2.xyzx, r4.xyzx +dp3 r0.z, r1.xyzx, r1.xyzx +dp3 r1.x, r3.xyzx, r1.xyzx +rsq r1.y, r0.z +mad_sat r1.x, r1.x, r1.y, -cb0[3].w +mad_sat r0.x, r0.z, r0.x, l(1.000000) +mad r0.x, r1.x, r0.x, r0.w +mul r0.x, r0.x, cb0[4].y +mad r0.x, r0.y, cb0[4].x, r0.x +mul r0.x, r0.x, l(0.031250) +mad r0.y, r2.z, cb0[7].z, l(1.000000) +mul_sat r0.y, r0.y, cb0[7].w +dp2 r0.x, r0.xxxx, r0.yyyy +add_sat o0.x, -r0.x, l(1.000000) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_0_D3D11[] = +{ + 68, 88, 66, 67, 145, 194, + 179, 27, 246, 194, 252, 165, + 209, 5, 210, 130, 96, 18, + 54, 138, 1, 0, 0, 0, + 128, 65, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 192, 64, 0, 0, + 80, 0, 0, 0, 48, 16, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 89, 0, + 0, 4, 70, 142, 32, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 64, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 88, 24, 0, 4, 0, 112, + 16, 0, 1, 0, 0, 0, + 85, 85, 0, 0, 100, 32, + 0, 4, 50, 16, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 8, 0, 0, 0, 65, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 13, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 64, 0, 0, + 128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 56, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 62, 0, 0, + 128, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 14, 0, 0, 8, 130, 0, + 16, 0, 0, 0, 0, 0, + 26, 128, 32, 0, 0, 0, + 0, 0, 8, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 51, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 49, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 31, 0, 4, 3, + 42, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 18, 32, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 62, 0, + 0, 1, 21, 0, 0, 1, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 1, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 2, 0, + 0, 0, 166, 10, 16, 0, + 2, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 27, 0, 0, 5, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 54, 0, 0, 8, + 194, 0, 16, 0, 3, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 45, 0, + 0, 137, 194, 0, 0, 128, + 67, 85, 21, 0, 114, 0, + 16, 0, 3, 0, 0, 0, + 70, 14, 16, 0, 3, 0, + 0, 0, 70, 126, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 15, 114, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 0, 64, 0, 0, 0, 64, + 0, 0, 0, 64, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 191, 0, 0, + 128, 191, 0, 0, 128, 191, + 0, 0, 0, 0, 56, 0, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 14, 0, 0, 10, + 18, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 63, 0, 0, + 128, 63, 0, 0, 128, 63, + 0, 0, 128, 63, 10, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 8, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 50, 0, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 8, 194, 0, 16, 0, + 1, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 26, 0, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 8, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 58, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 8, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 129, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 5, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 50, 0, 0, 9, + 66, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 58, 0, 16, 0, 2, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 5, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 5, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 66, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 5, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 8, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 243, 4, + 53, 63, 243, 4, 53, 63, + 0, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 63, 26, 0, + 16, 128, 65, 0, 0, 0, + 4, 0, 0, 0, 0, 0, + 0, 7, 34, 0, 16, 0, + 5, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 12, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 34, 0, + 16, 0, 5, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 191, 26, 0, + 16, 128, 65, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 5, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 243, 4, 53, 191, + 10, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 13, + 18, 0, 16, 0, 4, 0, + 0, 0, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 187, 179, 10, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 12, 34, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 187, 179, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 8, 130, 0, + 16, 0, 3, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 245, 4, + 53, 191, 50, 0, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 241, 4, 53, 191, 58, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 15, 0, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 22, 133, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 241, 4, 53, 191, + 245, 4, 53, 191, 0, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 222, + 76, 50, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 12, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 222, 76, 50, 10, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 8, + 130, 0, 16, 0, 3, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 239, 4, 53, 191, 50, 0, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 247, 4, 53, 63, + 58, 0, 16, 128, 65, 0, + 0, 0, 3, 0, 0, 0, + 15, 0, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 22, 133, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 247, 4, + 53, 63, 239, 4, 53, 191, + 0, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 34, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 1, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 1, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 1, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 1, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 8, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 128, + 32, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 18, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 61, + 50, 0, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 2, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 7, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 32, + 0, 8, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 58, 128, 32, 0, 0, 0, + 0, 0, 7, 0, 0, 0, + 15, 0, 0, 7, 18, 0, + 16, 0, 0, 0, 0, 0, + 6, 0, 16, 0, 0, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 0, 32, + 0, 8, 18, 32, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 62, 0, 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[14], immediateIndexed +dcl_constantbuffer cb1[2], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2darray (float,float,float,float) t0 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 8 +round_ni r0.xy, v0.xyxx +mad r0.xy, r0.xyxx, l(4.000000, 4.000000, 0.000000, 0.000000), cb1[1].xyxx +mul r0.zw, r0.xxxy, cb0[1].xxxy +mul r1.xy, r0.zwzz, l(0.250000, 0.250000, 0.000000, 0.000000) +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r2.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +div r0.z, cb0[3].x, r2.z +div r0.w, cb0[8].y, r0.z +min r0.w, r0.w, l(1.000000) +mul r0.z, r0.w, r0.z +lt r1.z, r0.z, l(1.000000) +if_nz r1.z + mov o0.x, l(1.000000) + ret +endif +mad r1.zw, cb0[2].xxxy, r1.xxxy, cb0[2].zzzw +mul r2.xy, r2.zzzz, r1.zwzz +add r0.xy, r0.xyxx, cb0[7].xyxx +ftoi r3.xy, r0.xyxx +mov r3.zw, l(0,0,0,0) +ld_indexable(texture2d)(float,float,float,float) r3.xyz, r3.xyzw, t1.xyzw +mad r3.xyz, r3.xyzx, cb0[13].xxxx, cb0[13].yyyy +mul r4.xyz, r3.yyyy, cb0[10].xyzx +mad r3.xyw, r3.xxxx, cb0[9].xyxz, r4.xyxz +mad r3.xyz, r3.zzzz, cb0[11].xyzx, r3.xywx +dp3 r0.x, r3.xyzx, r3.xyzx +rsq r0.x, r0.x +mul r3.xyz, r0.xxxx, r3.xyzx +mul r0.x, r0.w, r0.w +div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x +mul r0.x, r0.x, cb0[3].z +mul r0.y, r0.z, l(0.050000) +mad r0.y, cb1[0].z, r0.y, l(1.000000) +mul r1.zw, r0.yyyy, cb1[0].xxxy +round_ne r1.zw, r1.zzzw +mad r4.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r4.xxxy, cb0[2].zzzw +mul r5.xy, r5.zzzz, r1.zwzz +mad r0.w, r0.z, l(0.050000), r0.y +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r1.z, r4.xyzx, r4.xyzx +dp3 r1.w, r3.xyzx, r4.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mul r4.xy, r0.wwww, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +mad r2.w, r0.z, l(0.050000), r0.w +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mul r4.yz, r2.wwww, cb1[0].xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +mad r0.z, r0.z, l(0.050000), r2.w +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r5.x, r4.yzwy, r4.yzwy +dp3 r4.y, r3.xyzx, r4.yzwy +rsq r4.z, r5.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.x, r0.x, l(1.000000) +mul r4.y, r4.z, r4.y +mad r3.w, r4.x, r3.w, r4.y +mul r4.xy, r0.zzzz, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r4.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r4.y, r4.w, r0.x, l(1.000000) +mad r3.w, r4.x, r4.y, r3.w +mul r4.xy, cb1[0].xyxx, l(0.707107, 0.707107, 0.000000, 0.000000) +mad r5.x, cb1[0].x, l(0.707107), -r4.y +add r5.y, r4.x, r4.y +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r4.z, r6.xyzx, r6.xyzx +dp3 r4.w, r3.xyzx, r6.xyzx +rsq r5.z, r4.z +mad_sat r4.w, r4.w, r5.z, -cb0[3].w +mad_sat r4.z, r4.z, r0.x, l(1.000000) +mul r4.z, r4.z, r4.w +mad r1.z, r1.w, r1.z, r4.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r1.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r1.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r1.w, r1.w, r0.x, l(1.000000) +mad r1.w, r4.z, r1.w, r3.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.000000), -cb1[0].y +mad r5.y, cb1[0].y, l(-0.000000), cb1[0].x +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.707107), -r4.y +mad r5.y, cb1[0].y, l(-0.707107), r4.x +mul r4.xy, r0.yyyy, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.x, r3.w, r1.z +mul r4.xy, r0.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r2.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r0.zzzz, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, -cb1[0].y, l(-0.000000), -cb1[0].x +mad r4.y, cb1[0].x, l(-0.000000), -cb1[0].y +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(-0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(-0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, cb1[0].x, l(0.000000), cb1[0].y +mad r4.y, cb1[0].y, l(0.000000), -cb1[0].x +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.y, r5.xyzx, r5.xyzx +dp3 r3.w, r3.xyzx, r5.xyzx +rsq r4.z, r0.y +mad_sat r3.w, r3.w, r4.z, -cb0[3].w +mad_sat r0.y, r0.y, r0.x, l(1.000000) +mad r0.y, r3.w, r0.y, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.w, r5.xyzx, r5.xyzx +dp3 r1.z, r3.xyzx, r5.xyzx +rsq r3.w, r0.w +mad_sat r1.z, r1.z, r3.w, -cb0[3].w +mad_sat r0.w, r0.w, r0.x, l(1.000000) +mad r0.w, r1.z, r0.w, r1.w +mul r1.zw, r2.wwww, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r5.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r1.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r1.z, r5.xyzx, r5.xyzx +dp3 r1.w, r3.xyzx, r5.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mad r0.w, r1.w, r1.z, r0.w +mul r1.zw, r0.zzzz, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r1.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.xy, cb0[2].xyxx, r1.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r1.xyxx +add r1.xyz, -r2.xyzx, r4.xyzx +dp3 r0.z, r1.xyzx, r1.xyzx +dp3 r1.x, r3.xyzx, r1.xyzx +rsq r1.y, r0.z +mad_sat r1.x, r1.x, r1.y, -cb0[3].w +mad_sat r0.x, r0.z, r0.x, l(1.000000) +mad r0.x, r1.x, r0.x, r0.w +mul r0.x, r0.x, cb0[4].y +mad r0.x, r0.y, cb0[4].x, r0.x +mul r0.x, r0.x, l(0.031250) +mad r0.y, r2.z, cb0[7].z, l(1.000000) +mul_sat r0.y, r0.y, cb0[7].w +dp2 r0.x, r0.xxxx, r0.yyyy +add_sat o0.x, -r0.x, l(1.000000) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_1_D3D11[] = +{ + 68, 88, 66, 67, 74, 252, + 109, 77, 218, 80, 186, 59, + 146, 99, 191, 190, 145, 200, + 95, 216, 1, 0, 0, 0, + 76, 66, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 140, 65, 0, 0, + 80, 0, 0, 0, 99, 16, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 89, 0, + 0, 4, 70, 142, 32, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 64, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 88, 24, 0, 4, 0, 112, + 16, 0, 1, 0, 0, 0, + 85, 85, 0, 0, 100, 32, + 0, 4, 50, 16, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 8, 0, 0, 0, 65, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 13, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 64, 0, 0, + 128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 56, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 62, 0, 0, + 128, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 14, 0, 0, 8, 130, 0, + 16, 0, 0, 0, 0, 0, + 26, 128, 32, 0, 0, 0, + 0, 0, 8, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 51, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 49, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 31, 0, 4, 3, + 42, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 18, 32, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 62, 0, + 0, 1, 21, 0, 0, 1, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 1, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 2, 0, + 0, 0, 166, 10, 16, 0, + 2, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 7, 0, + 0, 0, 27, 0, 0, 5, + 50, 0, 16, 0, 3, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 8, 194, 0, 16, 0, + 3, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 45, 0, 0, 137, 194, 0, + 0, 128, 67, 85, 21, 0, + 114, 0, 16, 0, 3, 0, + 0, 0, 70, 14, 16, 0, + 3, 0, 0, 0, 70, 126, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 11, 114, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 6, 128, 32, 0, + 0, 0, 0, 0, 13, 0, + 0, 0, 86, 133, 32, 0, + 0, 0, 0, 0, 13, 0, + 0, 0, 56, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 3, 0, 0, 0, 70, 130, + 32, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 50, 0, + 0, 10, 178, 0, 16, 0, + 3, 0, 0, 0, 6, 0, + 16, 0, 3, 0, 0, 0, + 70, 136, 32, 0, 0, 0, + 0, 0, 9, 0, 0, 0, + 70, 8, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 114, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 3, 0, 0, 0, 70, 130, + 32, 0, 0, 0, 0, 0, + 11, 0, 0, 0, 70, 3, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 114, 0, + 16, 0, 3, 0, 0, 0, + 6, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 14, 0, 0, 10, + 18, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 63, 0, 0, + 128, 63, 0, 0, 128, 63, + 0, 0, 128, 63, 10, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 8, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 50, 0, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 8, 194, 0, 16, 0, + 1, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 26, 0, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 8, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 58, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 8, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 129, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 5, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 50, 0, 0, 9, + 66, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 58, 0, 16, 0, 2, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 5, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 5, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 66, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 5, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 8, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 243, 4, + 53, 63, 243, 4, 53, 63, + 0, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 63, 26, 0, + 16, 128, 65, 0, 0, 0, + 4, 0, 0, 0, 0, 0, + 0, 7, 34, 0, 16, 0, + 5, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 12, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 34, 0, + 16, 0, 5, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 191, 26, 0, + 16, 128, 65, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 5, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 243, 4, 53, 191, + 10, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 13, + 18, 0, 16, 0, 4, 0, + 0, 0, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 187, 179, 10, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 12, 34, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 187, 179, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 8, 130, 0, + 16, 0, 3, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 245, 4, + 53, 191, 50, 0, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 241, 4, 53, 191, 58, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 15, 0, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 22, 133, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 241, 4, 53, 191, + 245, 4, 53, 191, 0, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 222, + 76, 50, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 12, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 222, 76, 50, 10, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 8, + 130, 0, 16, 0, 3, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 239, 4, 53, 191, 50, 0, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 247, 4, 53, 63, + 58, 0, 16, 128, 65, 0, + 0, 0, 3, 0, 0, 0, + 15, 0, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 22, 133, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 247, 4, + 53, 63, 239, 4, 53, 191, + 0, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 34, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 1, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 1, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 1, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 1, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 8, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 128, + 32, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 18, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 61, + 50, 0, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 2, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 7, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 32, + 0, 8, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 58, 128, 32, 0, 0, 0, + 0, 0, 7, 0, 0, 0, + 15, 0, 0, 7, 18, 0, + 16, 0, 0, 0, 0, 0, + 6, 0, 16, 0, 0, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 0, 32, + 0, 8, 18, 32, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 62, 0, 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[14], immediateIndexed +dcl_constantbuffer cb1[2], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2darray (float,float,float,float) t0 +dcl_resource_texture2dms(0) (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 8 +round_ni r0.xy, v0.xyxx +mad r0.xy, r0.xyxx, l(4.000000, 4.000000, 0.000000, 0.000000), cb1[1].xyxx +mul r0.zw, r0.xxxy, cb0[1].xxxy +mul r1.xy, r0.zwzz, l(0.250000, 0.250000, 0.000000, 0.000000) +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r2.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +div r0.z, cb0[3].x, r2.z +div r0.w, cb0[8].y, r0.z +min r0.w, r0.w, l(1.000000) +mul r0.z, r0.w, r0.z +lt r1.z, r0.z, l(1.000000) +if_nz r1.z + mov o0.x, l(1.000000) + ret +endif +mad r1.zw, cb0[2].xxxy, r1.xxxy, cb0[2].zzzw +mul r2.xy, r2.zzzz, r1.zwzz +add r0.xy, r0.xyxx, cb0[7].xyxx +ftoi r3.xy, r0.xyxx +mov r3.zw, l(0,0,0,0) +ldms_indexable(texture2dms)(float,float,float,float) r3.xyz, r3.xyzw, t1.xyzw, l(0) +mad r3.xyz, r3.xyzx, cb0[13].xxxx, cb0[13].yyyy +mul r4.xyz, r3.yyyy, cb0[10].xyzx +mad r3.xyw, r3.xxxx, cb0[9].xyxz, r4.xyxz +mad r3.xyz, r3.zzzz, cb0[11].xyzx, r3.xywx +dp3 r0.x, r3.xyzx, r3.xyzx +rsq r0.x, r0.x +mul r3.xyz, r0.xxxx, r3.xyzx +mul r0.x, r0.w, r0.w +div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x +mul r0.x, r0.x, cb0[3].z +mul r0.y, r0.z, l(0.050000) +mad r0.y, cb1[0].z, r0.y, l(1.000000) +mul r1.zw, r0.yyyy, cb1[0].xxxy +round_ne r1.zw, r1.zzzw +mad r4.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r4.xxxy, cb0[2].zzzw +mul r5.xy, r5.zzzz, r1.zwzz +mad r0.w, r0.z, l(0.050000), r0.y +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r1.z, r4.xyzx, r4.xyzx +dp3 r1.w, r3.xyzx, r4.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mul r4.xy, r0.wwww, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +mad r2.w, r0.z, l(0.050000), r0.w +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mul r4.yz, r2.wwww, cb1[0].xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +mad r0.z, r0.z, l(0.050000), r2.w +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r5.x, r4.yzwy, r4.yzwy +dp3 r4.y, r3.xyzx, r4.yzwy +rsq r4.z, r5.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.x, r0.x, l(1.000000) +mul r4.y, r4.z, r4.y +mad r3.w, r4.x, r3.w, r4.y +mul r4.xy, r0.zzzz, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r4.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r4.y, r4.w, r0.x, l(1.000000) +mad r3.w, r4.x, r4.y, r3.w +mul r4.xy, cb1[0].xyxx, l(0.707107, 0.707107, 0.000000, 0.000000) +mad r5.x, cb1[0].x, l(0.707107), -r4.y +add r5.y, r4.x, r4.y +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r4.z, r6.xyzx, r6.xyzx +dp3 r4.w, r3.xyzx, r6.xyzx +rsq r5.z, r4.z +mad_sat r4.w, r4.w, r5.z, -cb0[3].w +mad_sat r4.z, r4.z, r0.x, l(1.000000) +mul r4.z, r4.z, r4.w +mad r1.z, r1.w, r1.z, r4.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r1.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r1.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r1.w, r1.w, r0.x, l(1.000000) +mad r1.w, r4.z, r1.w, r3.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.000000), -cb1[0].y +mad r5.y, cb1[0].y, l(-0.000000), cb1[0].x +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.707107), -r4.y +mad r5.y, cb1[0].y, l(-0.707107), r4.x +mul r4.xy, r0.yyyy, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.x, r3.w, r1.z +mul r4.xy, r0.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r2.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r0.zzzz, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, -cb1[0].y, l(-0.000000), -cb1[0].x +mad r4.y, cb1[0].x, l(-0.000000), -cb1[0].y +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(-0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(-0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, cb1[0].x, l(0.000000), cb1[0].y +mad r4.y, cb1[0].y, l(0.000000), -cb1[0].x +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.y, r5.xyzx, r5.xyzx +dp3 r3.w, r3.xyzx, r5.xyzx +rsq r4.z, r0.y +mad_sat r3.w, r3.w, r4.z, -cb0[3].w +mad_sat r0.y, r0.y, r0.x, l(1.000000) +mad r0.y, r3.w, r0.y, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.w, r5.xyzx, r5.xyzx +dp3 r1.z, r3.xyzx, r5.xyzx +rsq r3.w, r0.w +mad_sat r1.z, r1.z, r3.w, -cb0[3].w +mad_sat r0.w, r0.w, r0.x, l(1.000000) +mad r0.w, r1.z, r0.w, r1.w +mul r1.zw, r2.wwww, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r5.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r1.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r1.z, r5.xyzx, r5.xyzx +dp3 r1.w, r3.xyzx, r5.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mad r0.w, r1.w, r1.z, r0.w +mul r1.zw, r0.zzzz, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r1.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.xy, cb0[2].xyxx, r1.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r1.xyxx +add r1.xyz, -r2.xyzx, r4.xyzx +dp3 r0.z, r1.xyzx, r1.xyzx +dp3 r1.x, r3.xyzx, r1.xyzx +rsq r1.y, r0.z +mad_sat r1.x, r1.x, r1.y, -cb0[3].w +mad_sat r0.x, r0.z, r0.x, l(1.000000) +mad r0.x, r1.x, r0.x, r0.w +mul r0.x, r0.x, cb0[4].y +mad r0.x, r0.y, cb0[4].x, r0.x +mul r0.x, r0.x, l(0.031250) +mad r0.y, r2.z, cb0[7].z, l(1.000000) +mul_sat r0.y, r0.y, cb0[7].w +dp2 r0.x, r0.xxxx, r0.yyyy +add_sat o0.x, -r0.x, l(1.000000) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_2_D3D11[] = +{ + 68, 88, 66, 67, 4, 66, + 193, 173, 149, 40, 101, 202, + 35, 170, 8, 94, 184, 54, + 194, 70, 1, 0, 0, 0, + 84, 66, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 148, 65, 0, 0, + 80, 0, 0, 0, 101, 16, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 89, 0, + 0, 4, 70, 142, 32, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 64, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 88, 32, 0, 4, 0, 112, + 16, 0, 1, 0, 0, 0, + 85, 85, 0, 0, 100, 32, + 0, 4, 50, 16, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 8, 0, 0, 0, 65, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 13, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 64, 0, 0, + 128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 56, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 62, 0, 0, + 128, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 14, 0, 0, 8, 130, 0, + 16, 0, 0, 0, 0, 0, + 26, 128, 32, 0, 0, 0, + 0, 0, 8, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 51, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 49, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 31, 0, 4, 3, + 42, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 18, 32, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 62, 0, + 0, 1, 21, 0, 0, 1, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 1, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 2, 0, + 0, 0, 166, 10, 16, 0, + 2, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 7, 0, + 0, 0, 27, 0, 0, 5, + 50, 0, 16, 0, 3, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 8, 194, 0, 16, 0, + 3, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 46, 0, 0, 139, 2, 1, + 0, 128, 67, 85, 21, 0, + 114, 0, 16, 0, 3, 0, + 0, 0, 70, 14, 16, 0, + 3, 0, 0, 0, 70, 126, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 114, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 6, 128, + 32, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 86, 133, + 32, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 56, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 3, 0, 0, 0, + 70, 130, 32, 0, 0, 0, + 0, 0, 10, 0, 0, 0, + 50, 0, 0, 10, 178, 0, + 16, 0, 3, 0, 0, 0, + 6, 0, 16, 0, 3, 0, + 0, 0, 70, 136, 32, 0, + 0, 0, 0, 0, 9, 0, + 0, 0, 70, 8, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 114, 0, 16, 0, + 3, 0, 0, 0, 166, 10, + 16, 0, 3, 0, 0, 0, + 70, 130, 32, 0, 0, 0, + 0, 0, 11, 0, 0, 0, + 70, 3, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 68, 0, 0, 5, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 114, 0, 16, 0, 3, 0, + 0, 0, 6, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 18, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 14, 0, + 0, 10, 18, 0, 16, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 128, 63, + 0, 0, 128, 63, 0, 0, + 128, 63, 0, 0, 128, 63, + 10, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 8, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 34, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 50, 0, 0, 10, + 34, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 8, 194, 0, + 16, 0, 1, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 132, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 1, 0, + 0, 0, 166, 14, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 1, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 26, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 2, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 8, 50, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 70, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 2, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 58, 0, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 8, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 129, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 5, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 4, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 50, 0, + 0, 9, 66, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 58, 0, 16, 0, + 2, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 86, 14, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 5, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 5, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 66, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 5, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 56, 0, + 0, 8, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 70, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 243, 4, 53, 63, 243, 4, + 53, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 243, 4, 53, 63, + 26, 0, 16, 128, 65, 0, + 0, 0, 4, 0, 0, 0, + 0, 0, 0, 7, 34, 0, + 16, 0, 5, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 7, 0, 0, 0, 166, 10, + 16, 0, 7, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 7, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 5, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 12, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 59, 179, 26, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 34, 0, 16, 0, 5, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 59, 179, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 7, 0, 0, 0, 166, 10, + 16, 0, 7, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 7, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 7, 0, 0, 0, 166, 10, + 16, 0, 7, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 7, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 7, 0, 0, 0, 166, 10, + 16, 0, 7, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 7, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 11, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 243, 4, 53, 191, + 26, 0, 16, 128, 65, 0, + 0, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 34, 0, + 16, 0, 5, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 243, 4, + 53, 191, 10, 0, 16, 0, + 4, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 13, 18, 0, 16, 0, + 4, 0, 0, 0, 26, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 187, 179, 10, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 12, + 34, 0, 16, 0, 4, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 187, 179, 26, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 8, + 130, 0, 16, 0, 3, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 245, 4, 53, 191, 50, 0, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 241, 4, 53, 191, + 58, 0, 16, 128, 65, 0, + 0, 0, 3, 0, 0, 0, + 15, 0, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 22, 133, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 241, 4, + 53, 191, 245, 4, 53, 191, + 0, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 222, 76, 50, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 12, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 222, 76, 50, + 10, 128, 32, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 130, 0, 16, 0, + 3, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 239, 4, 53, 191, + 50, 0, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 247, 4, + 53, 63, 58, 0, 16, 128, + 65, 0, 0, 0, 3, 0, + 0, 0, 15, 0, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 22, 133, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 247, 4, 53, 63, 239, 4, + 53, 191, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 34, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 1, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 1, 0, + 0, 0, 166, 14, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 1, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 2, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 1, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 1, 0, + 0, 0, 166, 14, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 1, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 1, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 18, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 8, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 26, 128, 32, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 18, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 10, 128, 32, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 61, 50, 0, 0, 10, + 34, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 2, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 32, 0, 8, 34, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 58, 128, 32, 0, + 0, 0, 0, 0, 7, 0, + 0, 0, 15, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 6, 0, 16, 0, + 0, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 0, 32, 0, 8, 18, 32, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 62, 0, 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[9], immediateIndexed +dcl_constantbuffer cb1[2], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2darray (float,float,float,float) t0 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 8 +round_ni r0.xy, v0.xyxx +mad r0.xy, r0.xyxx, l(4.000000, 4.000000, 0.000000, 0.000000), cb1[1].xyxx +mul r0.zw, r0.xxxy, cb0[1].xxxy +mul r1.xy, r0.zwzz, l(0.250000, 0.250000, 0.000000, 0.000000) +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r2.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +div r0.z, cb0[3].x, r2.z +div r0.w, cb0[8].x, r0.z +max r0.w, r0.w, l(1.000000) +mul r0.z, r0.w, r0.z +div r1.z, cb0[8].y, r0.z +min r1.z, r1.z, l(1.000000) +mul r0.z, r0.z, r1.z +lt r1.w, r0.z, l(1.000000) +if_nz r1.w + mov o0.x, l(1.000000) + ret +endif +mad r3.xy, cb0[2].xyxx, r1.xyxx, cb0[2].zwzz +mul r2.xy, r2.zzzz, r3.xyxx +ftoi r3.xy, r0.xyxx +mov r3.zw, l(0,0,0,0) +ld_indexable(texture2d)(float,float,float,float) r3.xyz, r3.xyzw, t1.xyzw +mad r3.xyz, r3.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000) +mul r0.x, r0.w, r0.w +div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x +mul r0.x, r0.x, cb0[3].z +mul r0.y, r1.z, r1.z +div r0.y, l(1.000000, 1.000000, 1.000000, 1.000000), r0.y +mul r0.x, r0.y, r0.x +mul r0.y, r0.z, l(0.050000) +mad r0.y, cb1[0].z, r0.y, l(1.000000) +mul r1.zw, r0.yyyy, cb1[0].xxxy +round_ne r1.zw, r1.zzzw +mad r4.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r4.xxxy, cb0[2].zzzw +mul r5.xy, r5.zzzz, r1.zwzz +mad r0.w, r0.z, l(0.050000), r0.y +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r1.z, r4.xyzx, r4.xyzx +dp3 r1.w, r3.xyzx, r4.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mul r4.xy, r0.wwww, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +mad r2.w, r0.z, l(0.050000), r0.w +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mul r4.yz, r2.wwww, cb1[0].xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +mad r0.z, r0.z, l(0.050000), r2.w +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r5.x, r4.yzwy, r4.yzwy +dp3 r4.y, r3.xyzx, r4.yzwy +rsq r4.z, r5.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.x, r0.x, l(1.000000) +mul r4.y, r4.z, r4.y +mad r3.w, r4.x, r3.w, r4.y +mul r4.xy, r0.zzzz, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r4.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r4.y, r4.w, r0.x, l(1.000000) +mad r3.w, r4.x, r4.y, r3.w +mul r4.xy, cb1[0].xyxx, l(0.707107, 0.707107, 0.000000, 0.000000) +mad r5.x, cb1[0].x, l(0.707107), -r4.y +add r5.y, r4.x, r4.y +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r4.z, r6.xyzx, r6.xyzx +dp3 r4.w, r3.xyzx, r6.xyzx +rsq r5.z, r4.z +mad_sat r4.w, r4.w, r5.z, -cb0[3].w +mad_sat r4.z, r4.z, r0.x, l(1.000000) +mul r4.z, r4.z, r4.w +mad r1.z, r1.w, r1.z, r4.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r1.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r1.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r1.w, r1.w, r0.x, l(1.000000) +mad r1.w, r4.z, r1.w, r3.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.000000), -cb1[0].y +mad r5.y, cb1[0].y, l(-0.000000), cb1[0].x +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.707107), -r4.y +mad r5.y, cb1[0].y, l(-0.707107), r4.x +mul r4.xy, r0.yyyy, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.x, r3.w, r1.z +mul r4.xy, r0.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r2.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r0.zzzz, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, -cb1[0].y, l(-0.000000), -cb1[0].x +mad r4.y, cb1[0].x, l(-0.000000), -cb1[0].y +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(-0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(-0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, cb1[0].x, l(0.000000), cb1[0].y +mad r4.y, cb1[0].y, l(0.000000), -cb1[0].x +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.y, r5.xyzx, r5.xyzx +dp3 r3.w, r3.xyzx, r5.xyzx +rsq r4.z, r0.y +mad_sat r3.w, r3.w, r4.z, -cb0[3].w +mad_sat r0.y, r0.y, r0.x, l(1.000000) +mad r0.y, r3.w, r0.y, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.w, r5.xyzx, r5.xyzx +dp3 r1.z, r3.xyzx, r5.xyzx +rsq r3.w, r0.w +mad_sat r1.z, r1.z, r3.w, -cb0[3].w +mad_sat r0.w, r0.w, r0.x, l(1.000000) +mad r0.w, r1.z, r0.w, r1.w +mul r1.zw, r2.wwww, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r5.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r1.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r1.z, r5.xyzx, r5.xyzx +dp3 r1.w, r3.xyzx, r5.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mad r0.w, r1.w, r1.z, r0.w +mul r1.zw, r0.zzzz, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r1.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.xy, cb0[2].xyxx, r1.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r1.xyxx +add r1.xyz, -r2.xyzx, r4.xyzx +dp3 r0.z, r1.xyzx, r1.xyzx +dp3 r1.x, r3.xyzx, r1.xyzx +rsq r1.y, r0.z +mad_sat r1.x, r1.x, r1.y, -cb0[3].w +mad_sat r0.x, r0.z, r0.x, l(1.000000) +mad r0.x, r1.x, r0.x, r0.w +mul r0.x, r0.x, cb0[4].y +mad r0.x, r0.y, cb0[4].x, r0.x +mad_sat o0.x, -r0.x, l(0.062500), l(1.000000) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_0_D3D11[] = +{ + 68, 88, 66, 67, 31, 233, + 38, 77, 169, 230, 49, 243, + 196, 113, 137, 250, 160, 89, + 174, 117, 1, 0, 0, 0, + 192, 65, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 0, 65, 0, 0, + 80, 0, 0, 0, 64, 16, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 89, 0, + 0, 4, 70, 142, 32, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 64, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 88, 24, 0, 4, 0, 112, + 16, 0, 1, 0, 0, 0, + 85, 85, 0, 0, 100, 32, + 0, 4, 50, 16, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 8, 0, 0, 0, 65, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 13, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 64, 0, 0, + 128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 56, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 62, 0, 0, + 128, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 14, 0, 0, 8, 130, 0, + 16, 0, 0, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 8, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 52, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 1, 0, 0, 0, 26, 128, + 32, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 51, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 66, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 49, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 31, 0, 4, 3, 58, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 18, 32, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 62, 0, 0, 1, + 21, 0, 0, 1, 50, 0, + 0, 11, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 2, 0, 0, 0, + 166, 10, 16, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 27, 0, + 0, 5, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 54, 0, 0, 8, 194, 0, + 16, 0, 3, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 45, 0, 0, 137, + 194, 0, 0, 128, 67, 85, + 21, 0, 114, 0, 16, 0, + 3, 0, 0, 0, 70, 14, + 16, 0, 3, 0, 0, 0, + 70, 126, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 15, + 114, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 64, + 0, 0, 0, 64, 0, 0, + 0, 64, 0, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 128, 191, 0, 0, 128, 191, + 0, 0, 128, 191, 0, 0, + 0, 0, 56, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 14, 0, 0, 10, 18, 0, + 16, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 128, 63, 0, 0, 128, 63, + 0, 0, 128, 63, 0, 0, + 128, 63, 10, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 8, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 14, 0, + 0, 10, 34, 0, 16, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 128, 63, + 0, 0, 128, 63, 0, 0, + 128, 63, 0, 0, 128, 63, + 26, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 50, 0, + 0, 10, 34, 0, 16, 0, + 0, 0, 0, 0, 42, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 8, + 194, 0, 16, 0, 1, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 132, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 1, 0, 0, 0, 166, 14, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 1, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 9, 130, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 26, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 2, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 50, 32, + 0, 11, 130, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 8, 50, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 70, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 130, 0, 16, 0, 2, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 58, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 8, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 129, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 5, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 4, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 50, 0, 0, 9, 66, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 58, 0, + 16, 0, 2, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 5, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 5, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 5, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 8, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 243, 4, 53, 63, + 243, 4, 53, 63, 0, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 243, 4, + 53, 63, 26, 0, 16, 128, + 65, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 7, + 34, 0, 16, 0, 5, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 5, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 7, 0, 0, 0, 166, 10, + 16, 0, 7, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 7, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 7, 0, 0, 0, 166, 10, + 16, 0, 7, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 7, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 12, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 189, 59, 179, + 26, 128, 32, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 34, 0, 16, 0, + 5, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 189, 59, 179, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 11, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 243, 4, + 53, 191, 26, 0, 16, 128, + 65, 0, 0, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 34, 0, 16, 0, 5, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 191, 10, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 13, 18, 0, + 16, 0, 4, 0, 0, 0, + 26, 128, 32, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 189, 187, 179, + 10, 128, 32, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 12, 34, 0, 16, 0, + 4, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 189, 187, 179, + 26, 128, 32, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 130, 0, 16, 0, + 3, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 245, 4, 53, 191, + 50, 0, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 241, 4, + 53, 191, 58, 0, 16, 128, + 65, 0, 0, 0, 3, 0, + 0, 0, 15, 0, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 22, 133, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 241, 4, 53, 191, 245, 4, + 53, 191, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 222, 76, 50, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 12, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 222, + 76, 50, 10, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 8, 130, 0, + 16, 0, 3, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 239, 4, + 53, 191, 50, 0, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 247, 4, 53, 63, 58, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 15, 0, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 22, 133, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 247, 4, 53, 63, + 239, 4, 53, 191, 0, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 50, 32, + 0, 11, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 34, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 34, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 1, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 1, 0, 0, 0, 166, 14, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 1, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 2, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 50, 32, + 0, 11, 130, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 1, 0, 0, 0, 166, 14, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 18, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 8, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 26, 128, 32, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 18, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 10, 18, 32, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 61, 1, 64, 0, 0, + 0, 0, 128, 63, 62, 0, + 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[14], immediateIndexed +dcl_constantbuffer cb1[2], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2darray (float,float,float,float) t0 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 8 +round_ni r0.xy, v0.xyxx +mad r0.xy, r0.xyxx, l(4.000000, 4.000000, 0.000000, 0.000000), cb1[1].xyxx +mul r0.zw, r0.xxxy, cb0[1].xxxy +mul r1.xy, r0.zwzz, l(0.250000, 0.250000, 0.000000, 0.000000) +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r2.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +div r0.z, cb0[3].x, r2.z +div r0.w, cb0[8].x, r0.z +max r0.w, r0.w, l(1.000000) +mul r0.z, r0.w, r0.z +div r1.z, cb0[8].y, r0.z +min r1.z, r1.z, l(1.000000) +mul r0.z, r0.z, r1.z +lt r1.w, r0.z, l(1.000000) +if_nz r1.w + mov o0.x, l(1.000000) + ret +endif +mad r3.xy, cb0[2].xyxx, r1.xyxx, cb0[2].zwzz +mul r2.xy, r2.zzzz, r3.xyxx +add r0.xy, r0.xyxx, cb0[7].xyxx +ftoi r3.xy, r0.xyxx +mov r3.zw, l(0,0,0,0) +ld_indexable(texture2d)(float,float,float,float) r3.xyz, r3.xyzw, t1.xyzw +mad r3.xyz, r3.xyzx, cb0[13].xxxx, cb0[13].yyyy +mul r4.xyz, r3.yyyy, cb0[10].xyzx +mad r3.xyw, r3.xxxx, cb0[9].xyxz, r4.xyxz +mad r3.xyz, r3.zzzz, cb0[11].xyzx, r3.xywx +dp3 r0.x, r3.xyzx, r3.xyzx +rsq r0.x, r0.x +mul r3.xyz, r0.xxxx, r3.xyzx +mul r0.x, r0.w, r0.w +div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x +mul r0.x, r0.x, cb0[3].z +mul r0.y, r1.z, r1.z +div r0.y, l(1.000000, 1.000000, 1.000000, 1.000000), r0.y +mul r0.x, r0.y, r0.x +mul r0.y, r0.z, l(0.050000) +mad r0.y, cb1[0].z, r0.y, l(1.000000) +mul r1.zw, r0.yyyy, cb1[0].xxxy +round_ne r1.zw, r1.zzzw +mad r4.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r4.xxxy, cb0[2].zzzw +mul r5.xy, r5.zzzz, r1.zwzz +mad r0.w, r0.z, l(0.050000), r0.y +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r1.z, r4.xyzx, r4.xyzx +dp3 r1.w, r3.xyzx, r4.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mul r4.xy, r0.wwww, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +mad r2.w, r0.z, l(0.050000), r0.w +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mul r4.yz, r2.wwww, cb1[0].xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +mad r0.z, r0.z, l(0.050000), r2.w +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r5.x, r4.yzwy, r4.yzwy +dp3 r4.y, r3.xyzx, r4.yzwy +rsq r4.z, r5.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.x, r0.x, l(1.000000) +mul r4.y, r4.z, r4.y +mad r3.w, r4.x, r3.w, r4.y +mul r4.xy, r0.zzzz, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r4.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r4.y, r4.w, r0.x, l(1.000000) +mad r3.w, r4.x, r4.y, r3.w +mul r4.xy, cb1[0].xyxx, l(0.707107, 0.707107, 0.000000, 0.000000) +mad r5.x, cb1[0].x, l(0.707107), -r4.y +add r5.y, r4.x, r4.y +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r4.z, r6.xyzx, r6.xyzx +dp3 r4.w, r3.xyzx, r6.xyzx +rsq r5.z, r4.z +mad_sat r4.w, r4.w, r5.z, -cb0[3].w +mad_sat r4.z, r4.z, r0.x, l(1.000000) +mul r4.z, r4.z, r4.w +mad r1.z, r1.w, r1.z, r4.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r1.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r1.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r1.w, r1.w, r0.x, l(1.000000) +mad r1.w, r4.z, r1.w, r3.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.000000), -cb1[0].y +mad r5.y, cb1[0].y, l(-0.000000), cb1[0].x +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.707107), -r4.y +mad r5.y, cb1[0].y, l(-0.707107), r4.x +mul r4.xy, r0.yyyy, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.x, r3.w, r1.z +mul r4.xy, r0.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r2.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r0.zzzz, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, -cb1[0].y, l(-0.000000), -cb1[0].x +mad r4.y, cb1[0].x, l(-0.000000), -cb1[0].y +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(-0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(-0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, cb1[0].x, l(0.000000), cb1[0].y +mad r4.y, cb1[0].y, l(0.000000), -cb1[0].x +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.y, r5.xyzx, r5.xyzx +dp3 r3.w, r3.xyzx, r5.xyzx +rsq r4.z, r0.y +mad_sat r3.w, r3.w, r4.z, -cb0[3].w +mad_sat r0.y, r0.y, r0.x, l(1.000000) +mad r0.y, r3.w, r0.y, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.w, r5.xyzx, r5.xyzx +dp3 r1.z, r3.xyzx, r5.xyzx +rsq r3.w, r0.w +mad_sat r1.z, r1.z, r3.w, -cb0[3].w +mad_sat r0.w, r0.w, r0.x, l(1.000000) +mad r0.w, r1.z, r0.w, r1.w +mul r1.zw, r2.wwww, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r5.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r1.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r1.z, r5.xyzx, r5.xyzx +dp3 r1.w, r3.xyzx, r5.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mad r0.w, r1.w, r1.z, r0.w +mul r1.zw, r0.zzzz, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r1.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.xy, cb0[2].xyxx, r1.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r1.xyxx +add r1.xyz, -r2.xyzx, r4.xyzx +dp3 r0.z, r1.xyzx, r1.xyzx +dp3 r1.x, r3.xyzx, r1.xyzx +rsq r1.y, r0.z +mad_sat r1.x, r1.x, r1.y, -cb0[3].w +mad_sat r0.x, r0.z, r0.x, l(1.000000) +mad r0.x, r1.x, r0.x, r0.w +mul r0.x, r0.x, cb0[4].y +mad r0.x, r0.y, cb0[4].x, r0.x +mad_sat o0.x, -r0.x, l(0.062500), l(1.000000) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_1_D3D11[] = +{ + 68, 88, 66, 67, 71, 225, + 200, 61, 180, 222, 3, 203, + 121, 98, 2, 157, 28, 4, + 123, 1, 1, 0, 0, 0, + 140, 66, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 204, 65, 0, 0, + 80, 0, 0, 0, 115, 16, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 89, 0, + 0, 4, 70, 142, 32, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 64, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 88, 24, 0, 4, 0, 112, + 16, 0, 1, 0, 0, 0, + 85, 85, 0, 0, 100, 32, + 0, 4, 50, 16, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 8, 0, 0, 0, 65, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 13, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 64, 0, 0, + 128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 56, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 62, 0, 0, + 128, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 14, 0, 0, 8, 130, 0, + 16, 0, 0, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 8, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 52, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 1, 0, 0, 0, 26, 128, + 32, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 51, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 66, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 49, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 31, 0, 4, 3, 58, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 18, 32, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 62, 0, 0, 1, + 21, 0, 0, 1, 50, 0, + 0, 11, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 2, 0, 0, 0, + 166, 10, 16, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 0, 0, + 0, 8, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 7, 0, 0, 0, + 27, 0, 0, 5, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 54, 0, 0, 8, + 194, 0, 16, 0, 3, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 45, 0, + 0, 137, 194, 0, 0, 128, + 67, 85, 21, 0, 114, 0, + 16, 0, 3, 0, 0, 0, + 70, 14, 16, 0, 3, 0, + 0, 0, 70, 126, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 11, 114, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 6, 128, 32, 0, 0, 0, + 0, 0, 13, 0, 0, 0, + 86, 133, 32, 0, 0, 0, + 0, 0, 13, 0, 0, 0, + 56, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 3, 0, + 0, 0, 70, 130, 32, 0, + 0, 0, 0, 0, 10, 0, + 0, 0, 50, 0, 0, 10, + 178, 0, 16, 0, 3, 0, + 0, 0, 6, 0, 16, 0, + 3, 0, 0, 0, 70, 136, + 32, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 70, 8, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 114, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 3, 0, + 0, 0, 70, 130, 32, 0, + 0, 0, 0, 0, 11, 0, + 0, 0, 70, 3, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 114, 0, 16, 0, + 3, 0, 0, 0, 6, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 14, 0, 0, 10, 18, 0, + 16, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 128, 63, 0, 0, 128, 63, + 0, 0, 128, 63, 0, 0, + 128, 63, 10, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 8, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 14, 0, + 0, 10, 34, 0, 16, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 128, 63, + 0, 0, 128, 63, 0, 0, + 128, 63, 0, 0, 128, 63, + 26, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 50, 0, + 0, 10, 34, 0, 16, 0, + 0, 0, 0, 0, 42, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 8, + 194, 0, 16, 0, 1, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 132, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 1, 0, 0, 0, 166, 14, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 1, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 9, 130, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 26, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 2, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 50, 32, + 0, 11, 130, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 8, 50, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 70, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 130, 0, 16, 0, 2, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 58, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 8, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 129, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 5, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 4, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 50, 0, 0, 9, 66, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 58, 0, + 16, 0, 2, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 5, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 5, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 5, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 8, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 243, 4, 53, 63, + 243, 4, 53, 63, 0, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 243, 4, + 53, 63, 26, 0, 16, 128, + 65, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 7, + 34, 0, 16, 0, 5, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 5, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 7, 0, 0, 0, 166, 10, + 16, 0, 7, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 7, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 7, 0, 0, 0, 166, 10, + 16, 0, 7, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 7, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 12, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 189, 59, 179, + 26, 128, 32, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 34, 0, 16, 0, + 5, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 189, 59, 179, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 11, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 243, 4, + 53, 191, 26, 0, 16, 128, + 65, 0, 0, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 34, 0, 16, 0, 5, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 191, 10, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 13, 18, 0, + 16, 0, 4, 0, 0, 0, + 26, 128, 32, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 189, 187, 179, + 10, 128, 32, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 12, 34, 0, 16, 0, + 4, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 189, 187, 179, + 26, 128, 32, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 130, 0, 16, 0, + 3, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 245, 4, 53, 191, + 50, 0, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 241, 4, + 53, 191, 58, 0, 16, 128, + 65, 0, 0, 0, 3, 0, + 0, 0, 15, 0, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 22, 133, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 241, 4, 53, 191, 245, 4, + 53, 191, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 222, 76, 50, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 12, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 222, + 76, 50, 10, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 8, 130, 0, + 16, 0, 3, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 239, 4, + 53, 191, 50, 0, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 247, 4, 53, 63, 58, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 15, 0, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 22, 133, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 247, 4, 53, 63, + 239, 4, 53, 191, 0, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 50, 32, + 0, 11, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 34, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 34, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 1, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 1, 0, 0, 0, 166, 14, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 1, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 2, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 50, 32, + 0, 11, 130, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 1, 0, 0, 0, 166, 14, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 18, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 8, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 26, 128, 32, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 18, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 10, 18, 32, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 61, 1, 64, 0, 0, + 0, 0, 128, 63, 62, 0, + 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[14], immediateIndexed +dcl_constantbuffer cb1[2], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2darray (float,float,float,float) t0 +dcl_resource_texture2dms(0) (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 8 +round_ni r0.xy, v0.xyxx +mad r0.xy, r0.xyxx, l(4.000000, 4.000000, 0.000000, 0.000000), cb1[1].xyxx +mul r0.zw, r0.xxxy, cb0[1].xxxy +mul r1.xy, r0.zwzz, l(0.250000, 0.250000, 0.000000, 0.000000) +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r2.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +div r0.z, cb0[3].x, r2.z +div r0.w, cb0[8].x, r0.z +max r0.w, r0.w, l(1.000000) +mul r0.z, r0.w, r0.z +div r1.z, cb0[8].y, r0.z +min r1.z, r1.z, l(1.000000) +mul r0.z, r0.z, r1.z +lt r1.w, r0.z, l(1.000000) +if_nz r1.w + mov o0.x, l(1.000000) + ret +endif +mad r3.xy, cb0[2].xyxx, r1.xyxx, cb0[2].zwzz +mul r2.xy, r2.zzzz, r3.xyxx +add r0.xy, r0.xyxx, cb0[7].xyxx +ftoi r3.xy, r0.xyxx +mov r3.zw, l(0,0,0,0) +ldms_indexable(texture2dms)(float,float,float,float) r3.xyz, r3.xyzw, t1.xyzw, l(0) +mad r3.xyz, r3.xyzx, cb0[13].xxxx, cb0[13].yyyy +mul r4.xyz, r3.yyyy, cb0[10].xyzx +mad r3.xyw, r3.xxxx, cb0[9].xyxz, r4.xyxz +mad r3.xyz, r3.zzzz, cb0[11].xyzx, r3.xywx +dp3 r0.x, r3.xyzx, r3.xyzx +rsq r0.x, r0.x +mul r3.xyz, r0.xxxx, r3.xyzx +mul r0.x, r0.w, r0.w +div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x +mul r0.x, r0.x, cb0[3].z +mul r0.y, r1.z, r1.z +div r0.y, l(1.000000, 1.000000, 1.000000, 1.000000), r0.y +mul r0.x, r0.y, r0.x +mul r0.y, r0.z, l(0.050000) +mad r0.y, cb1[0].z, r0.y, l(1.000000) +mul r1.zw, r0.yyyy, cb1[0].xxxy +round_ne r1.zw, r1.zzzw +mad r4.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r4.xxxy, cb0[2].zzzw +mul r5.xy, r5.zzzz, r1.zwzz +mad r0.w, r0.z, l(0.050000), r0.y +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r1.z, r4.xyzx, r4.xyzx +dp3 r1.w, r3.xyzx, r4.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mul r4.xy, r0.wwww, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +mad r2.w, r0.z, l(0.050000), r0.w +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mul r4.yz, r2.wwww, cb1[0].xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +mad r0.z, r0.z, l(0.050000), r2.w +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r5.x, r4.yzwy, r4.yzwy +dp3 r4.y, r3.xyzx, r4.yzwy +rsq r4.z, r5.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.x, r0.x, l(1.000000) +mul r4.y, r4.z, r4.y +mad r3.w, r4.x, r3.w, r4.y +mul r4.xy, r0.zzzz, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r4.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r4.y, r4.w, r0.x, l(1.000000) +mad r3.w, r4.x, r4.y, r3.w +mul r4.xy, cb1[0].xyxx, l(0.707107, 0.707107, 0.000000, 0.000000) +mad r5.x, cb1[0].x, l(0.707107), -r4.y +add r5.y, r4.x, r4.y +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r4.z, r6.xyzx, r6.xyzx +dp3 r4.w, r3.xyzx, r6.xyzx +rsq r5.z, r4.z +mad_sat r4.w, r4.w, r5.z, -cb0[3].w +mad_sat r4.z, r4.z, r0.x, l(1.000000) +mul r4.z, r4.z, r4.w +mad r1.z, r1.w, r1.z, r4.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r1.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r1.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r1.w, r1.w, r0.x, l(1.000000) +mad r1.w, r4.z, r1.w, r3.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.000000), -cb1[0].y +mad r5.y, cb1[0].y, l(-0.000000), cb1[0].x +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.707107), -r4.y +mad r5.y, cb1[0].y, l(-0.707107), r4.x +mul r4.xy, r0.yyyy, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.x, r3.w, r1.z +mul r4.xy, r0.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r2.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r0.zzzz, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, -cb1[0].y, l(-0.000000), -cb1[0].x +mad r4.y, cb1[0].x, l(-0.000000), -cb1[0].y +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(-0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(-0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, cb1[0].x, l(0.000000), cb1[0].y +mad r4.y, cb1[0].y, l(0.000000), -cb1[0].x +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.y, r5.xyzx, r5.xyzx +dp3 r3.w, r3.xyzx, r5.xyzx +rsq r4.z, r0.y +mad_sat r3.w, r3.w, r4.z, -cb0[3].w +mad_sat r0.y, r0.y, r0.x, l(1.000000) +mad r0.y, r3.w, r0.y, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.w, r5.xyzx, r5.xyzx +dp3 r1.z, r3.xyzx, r5.xyzx +rsq r3.w, r0.w +mad_sat r1.z, r1.z, r3.w, -cb0[3].w +mad_sat r0.w, r0.w, r0.x, l(1.000000) +mad r0.w, r1.z, r0.w, r1.w +mul r1.zw, r2.wwww, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r5.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r1.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r1.z, r5.xyzx, r5.xyzx +dp3 r1.w, r3.xyzx, r5.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mad r0.w, r1.w, r1.z, r0.w +mul r1.zw, r0.zzzz, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r1.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.xy, cb0[2].xyxx, r1.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r1.xyxx +add r1.xyz, -r2.xyzx, r4.xyzx +dp3 r0.z, r1.xyzx, r1.xyzx +dp3 r1.x, r3.xyzx, r1.xyzx +rsq r1.y, r0.z +mad_sat r1.x, r1.x, r1.y, -cb0[3].w +mad_sat r0.x, r0.z, r0.x, l(1.000000) +mad r0.x, r1.x, r0.x, r0.w +mul r0.x, r0.x, cb0[4].y +mad r0.x, r0.y, cb0[4].x, r0.x +mad_sat o0.x, -r0.x, l(0.062500), l(1.000000) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_2_D3D11[] = +{ + 68, 88, 66, 67, 203, 177, + 41, 66, 97, 92, 5, 181, + 116, 7, 148, 86, 216, 196, + 253, 187, 1, 0, 0, 0, + 148, 66, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 212, 65, 0, 0, + 80, 0, 0, 0, 117, 16, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 89, 0, + 0, 4, 70, 142, 32, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 64, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 88, 32, 0, 4, 0, 112, + 16, 0, 1, 0, 0, 0, + 85, 85, 0, 0, 100, 32, + 0, 4, 50, 16, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 8, 0, 0, 0, 65, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 13, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 64, 0, 0, + 128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 56, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 62, 0, 0, + 128, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 14, 0, 0, 8, 130, 0, + 16, 0, 0, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 8, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 52, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 1, 0, 0, 0, 26, 128, + 32, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 51, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 66, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 49, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 31, 0, 4, 3, 58, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 18, 32, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 62, 0, 0, 1, + 21, 0, 0, 1, 50, 0, + 0, 11, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 2, 0, 0, 0, + 166, 10, 16, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 0, 0, + 0, 8, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 7, 0, 0, 0, + 27, 0, 0, 5, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 54, 0, 0, 8, + 194, 0, 16, 0, 3, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 46, 0, + 0, 139, 2, 1, 0, 128, + 67, 85, 21, 0, 114, 0, + 16, 0, 3, 0, 0, 0, + 70, 14, 16, 0, 3, 0, + 0, 0, 70, 126, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 114, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 6, 128, 32, 0, + 0, 0, 0, 0, 13, 0, + 0, 0, 86, 133, 32, 0, + 0, 0, 0, 0, 13, 0, + 0, 0, 56, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 3, 0, 0, 0, 70, 130, + 32, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 50, 0, + 0, 10, 178, 0, 16, 0, + 3, 0, 0, 0, 6, 0, + 16, 0, 3, 0, 0, 0, + 70, 136, 32, 0, 0, 0, + 0, 0, 9, 0, 0, 0, + 70, 8, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 114, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 3, 0, 0, 0, 70, 130, + 32, 0, 0, 0, 0, 0, + 11, 0, 0, 0, 70, 3, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 114, 0, + 16, 0, 3, 0, 0, 0, + 6, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 14, 0, 0, 10, + 18, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 63, 0, 0, + 128, 63, 0, 0, 128, 63, + 0, 0, 128, 63, 10, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 8, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 14, 0, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 128, 63, 0, 0, 128, 63, + 0, 0, 128, 63, 0, 0, + 128, 63, 26, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 50, 0, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 8, 194, 0, 16, 0, + 1, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 26, 0, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 8, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 58, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 8, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 129, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 5, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 50, 0, 0, 9, + 66, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 58, 0, 16, 0, 2, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 5, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 5, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 66, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 5, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 8, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 243, 4, + 53, 63, 243, 4, 53, 63, + 0, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 63, 26, 0, + 16, 128, 65, 0, 0, 0, + 4, 0, 0, 0, 0, 0, + 0, 7, 34, 0, 16, 0, + 5, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 12, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 34, 0, + 16, 0, 5, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 191, 26, 0, + 16, 128, 65, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 5, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 243, 4, 53, 191, + 10, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 13, + 18, 0, 16, 0, 4, 0, + 0, 0, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 187, 179, 10, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 12, 34, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 187, 179, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 8, 130, 0, + 16, 0, 3, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 245, 4, + 53, 191, 50, 0, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 241, 4, 53, 191, 58, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 15, 0, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 22, 133, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 241, 4, 53, 191, + 245, 4, 53, 191, 0, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 222, + 76, 50, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 12, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 222, 76, 50, 10, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 8, + 130, 0, 16, 0, 3, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 239, 4, 53, 191, 50, 0, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 247, 4, 53, 63, + 58, 0, 16, 128, 65, 0, + 0, 0, 3, 0, 0, 0, + 15, 0, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 22, 133, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 247, 4, + 53, 63, 239, 4, 53, 191, + 0, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 34, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 1, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 1, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 1, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 1, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 8, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 128, + 32, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 18, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 50, 32, 0, 10, + 18, 32, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 61, 1, 64, + 0, 0, 0, 0, 128, 63, + 62, 0, 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[9], immediateIndexed +dcl_constantbuffer cb1[2], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2darray (float,float,float,float) t0 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 8 +round_ni r0.xy, v0.xyxx +mad r0.xy, r0.xyxx, l(4.000000, 4.000000, 0.000000, 0.000000), cb1[1].xyxx +mul r0.zw, r0.xxxy, cb0[1].xxxy +mul r1.xy, r0.zwzz, l(0.250000, 0.250000, 0.000000, 0.000000) +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r2.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +div r0.z, cb0[3].x, r2.z +div r0.w, cb0[8].x, r0.z +max r0.w, r0.w, l(1.000000) +mul r0.z, r0.w, r0.z +div r1.z, cb0[8].y, r0.z +min r1.z, r1.z, l(1.000000) +mul r0.z, r0.z, r1.z +lt r1.w, r0.z, l(1.000000) +if_nz r1.w + mov o0.x, l(1.000000) + ret +endif +mad r3.xy, cb0[2].xyxx, r1.xyxx, cb0[2].zwzz +mul r2.xy, r2.zzzz, r3.xyxx +ftoi r3.xy, r0.xyxx +mov r3.zw, l(0,0,0,0) +ld_indexable(texture2d)(float,float,float,float) r3.xyz, r3.xyzw, t1.xyzw +mad r3.xyz, r3.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000) +mul r0.x, r0.w, r0.w +div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x +mul r0.x, r0.x, cb0[3].z +mul r0.y, r1.z, r1.z +div r0.y, l(1.000000, 1.000000, 1.000000, 1.000000), r0.y +mul r0.x, r0.y, r0.x +mul r0.y, r0.z, l(0.050000) +mad r0.y, cb1[0].z, r0.y, l(1.000000) +mul r1.zw, r0.yyyy, cb1[0].xxxy +round_ne r1.zw, r1.zzzw +mad r4.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r4.xxxy, cb0[2].zzzw +mul r5.xy, r5.zzzz, r1.zwzz +mad r0.w, r0.z, l(0.050000), r0.y +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r1.z, r4.xyzx, r4.xyzx +dp3 r1.w, r3.xyzx, r4.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mul r4.xy, r0.wwww, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +mad r2.w, r0.z, l(0.050000), r0.w +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mul r4.yz, r2.wwww, cb1[0].xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +mad r0.z, r0.z, l(0.050000), r2.w +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r5.x, r4.yzwy, r4.yzwy +dp3 r4.y, r3.xyzx, r4.yzwy +rsq r4.z, r5.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.x, r0.x, l(1.000000) +mul r4.y, r4.z, r4.y +mad r3.w, r4.x, r3.w, r4.y +mul r4.xy, r0.zzzz, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r4.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r4.y, r4.w, r0.x, l(1.000000) +mad r3.w, r4.x, r4.y, r3.w +mul r4.xy, cb1[0].xyxx, l(0.707107, 0.707107, 0.000000, 0.000000) +mad r5.x, cb1[0].x, l(0.707107), -r4.y +add r5.y, r4.x, r4.y +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r4.z, r6.xyzx, r6.xyzx +dp3 r4.w, r3.xyzx, r6.xyzx +rsq r5.z, r4.z +mad_sat r4.w, r4.w, r5.z, -cb0[3].w +mad_sat r4.z, r4.z, r0.x, l(1.000000) +mul r4.z, r4.z, r4.w +mad r1.z, r1.w, r1.z, r4.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r1.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r1.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r1.w, r1.w, r0.x, l(1.000000) +mad r1.w, r4.z, r1.w, r3.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.000000), -cb1[0].y +mad r5.y, cb1[0].y, l(-0.000000), cb1[0].x +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.707107), -r4.y +mad r5.y, cb1[0].y, l(-0.707107), r4.x +mul r4.xy, r0.yyyy, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.x, r3.w, r1.z +mul r4.xy, r0.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r2.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r0.zzzz, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, -cb1[0].y, l(-0.000000), -cb1[0].x +mad r4.y, cb1[0].x, l(-0.000000), -cb1[0].y +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(-0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(-0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, cb1[0].x, l(0.000000), cb1[0].y +mad r4.y, cb1[0].y, l(0.000000), -cb1[0].x +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.y, r5.xyzx, r5.xyzx +dp3 r3.w, r3.xyzx, r5.xyzx +rsq r4.z, r0.y +mad_sat r3.w, r3.w, r4.z, -cb0[3].w +mad_sat r0.y, r0.y, r0.x, l(1.000000) +mad r0.y, r3.w, r0.y, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.w, r5.xyzx, r5.xyzx +dp3 r1.z, r3.xyzx, r5.xyzx +rsq r3.w, r0.w +mad_sat r1.z, r1.z, r3.w, -cb0[3].w +mad_sat r0.w, r0.w, r0.x, l(1.000000) +mad r0.w, r1.z, r0.w, r1.w +mul r1.zw, r2.wwww, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r5.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r1.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r1.z, r5.xyzx, r5.xyzx +dp3 r1.w, r3.xyzx, r5.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mad r0.w, r1.w, r1.z, r0.w +mul r1.zw, r0.zzzz, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r1.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.xy, cb0[2].xyxx, r1.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r1.xyxx +add r1.xyz, -r2.xyzx, r4.xyzx +dp3 r0.z, r1.xyzx, r1.xyzx +dp3 r1.x, r3.xyzx, r1.xyzx +rsq r1.y, r0.z +mad_sat r1.x, r1.x, r1.y, -cb0[3].w +mad_sat r0.x, r0.z, r0.x, l(1.000000) +mad r0.x, r1.x, r0.x, r0.w +mul r0.x, r0.x, cb0[4].y +mad r0.x, r0.y, cb0[4].x, r0.x +mul r0.x, r0.x, l(0.031250) +mad r0.y, r2.z, cb0[7].z, l(1.000000) +mul_sat r0.y, r0.y, cb0[7].w +dp2 r0.x, r0.xxxx, r0.yyyy +add_sat o0.x, -r0.x, l(1.000000) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_0_D3D11[] = +{ + 68, 88, 66, 67, 8, 89, + 70, 158, 210, 60, 252, 42, + 78, 182, 239, 91, 135, 162, + 186, 106, 1, 0, 0, 0, + 56, 66, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 120, 65, 0, 0, + 80, 0, 0, 0, 94, 16, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 89, 0, + 0, 4, 70, 142, 32, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 64, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 88, 24, 0, 4, 0, 112, + 16, 0, 1, 0, 0, 0, + 85, 85, 0, 0, 100, 32, + 0, 4, 50, 16, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 8, 0, 0, 0, 65, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 13, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 64, 0, 0, + 128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 56, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 62, 0, 0, + 128, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 14, 0, 0, 8, 130, 0, + 16, 0, 0, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 8, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 52, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 1, 0, 0, 0, 26, 128, + 32, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 51, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 66, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 49, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 31, 0, 4, 3, 58, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 18, 32, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 62, 0, 0, 1, + 21, 0, 0, 1, 50, 0, + 0, 11, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 2, 0, 0, 0, + 166, 10, 16, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 27, 0, + 0, 5, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 54, 0, 0, 8, 194, 0, + 16, 0, 3, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 45, 0, 0, 137, + 194, 0, 0, 128, 67, 85, + 21, 0, 114, 0, 16, 0, + 3, 0, 0, 0, 70, 14, + 16, 0, 3, 0, 0, 0, + 70, 126, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 15, + 114, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 64, + 0, 0, 0, 64, 0, 0, + 0, 64, 0, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 128, 191, 0, 0, 128, 191, + 0, 0, 128, 191, 0, 0, + 0, 0, 56, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 14, 0, 0, 10, 18, 0, + 16, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 128, 63, 0, 0, 128, 63, + 0, 0, 128, 63, 0, 0, + 128, 63, 10, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 8, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 14, 0, + 0, 10, 34, 0, 16, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 128, 63, + 0, 0, 128, 63, 0, 0, + 128, 63, 0, 0, 128, 63, + 26, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 50, 0, + 0, 10, 34, 0, 16, 0, + 0, 0, 0, 0, 42, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 8, + 194, 0, 16, 0, 1, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 132, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 1, 0, 0, 0, 166, 14, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 1, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 9, 130, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 26, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 2, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 50, 32, + 0, 11, 130, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 8, 50, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 70, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 130, 0, 16, 0, 2, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 58, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 8, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 129, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 5, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 4, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 50, 0, 0, 9, 66, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 58, 0, + 16, 0, 2, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 5, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 5, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 5, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 8, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 243, 4, 53, 63, + 243, 4, 53, 63, 0, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 243, 4, + 53, 63, 26, 0, 16, 128, + 65, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 7, + 34, 0, 16, 0, 5, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 5, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 7, 0, 0, 0, 166, 10, + 16, 0, 7, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 7, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 7, 0, 0, 0, 166, 10, + 16, 0, 7, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 7, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 12, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 189, 59, 179, + 26, 128, 32, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 34, 0, 16, 0, + 5, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 189, 59, 179, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 11, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 243, 4, + 53, 191, 26, 0, 16, 128, + 65, 0, 0, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 34, 0, 16, 0, 5, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 191, 10, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 13, 18, 0, + 16, 0, 4, 0, 0, 0, + 26, 128, 32, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 189, 187, 179, + 10, 128, 32, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 12, 34, 0, 16, 0, + 4, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 189, 187, 179, + 26, 128, 32, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 130, 0, 16, 0, + 3, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 245, 4, 53, 191, + 50, 0, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 241, 4, + 53, 191, 58, 0, 16, 128, + 65, 0, 0, 0, 3, 0, + 0, 0, 15, 0, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 22, 133, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 241, 4, 53, 191, 245, 4, + 53, 191, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 222, 76, 50, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 12, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 222, + 76, 50, 10, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 8, 130, 0, + 16, 0, 3, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 239, 4, + 53, 191, 50, 0, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 247, 4, 53, 63, 58, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 15, 0, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 22, 133, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 247, 4, 53, 63, + 239, 4, 53, 191, 0, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 50, 32, + 0, 11, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 34, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 34, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 1, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 1, 0, 0, 0, 166, 14, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 1, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 2, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 50, 32, + 0, 11, 130, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 1, 0, 0, 0, 166, 14, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 18, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 8, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 26, 128, 32, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 18, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 61, 50, 0, + 0, 10, 34, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 7, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 32, 0, 8, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 58, 128, + 32, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 15, 0, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 6, 0, + 16, 0, 0, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 0, 32, 0, 8, + 18, 32, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 62, 0, + 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[14], immediateIndexed +dcl_constantbuffer cb1[2], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2darray (float,float,float,float) t0 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 8 +round_ni r0.xy, v0.xyxx +mad r0.xy, r0.xyxx, l(4.000000, 4.000000, 0.000000, 0.000000), cb1[1].xyxx +mul r0.zw, r0.xxxy, cb0[1].xxxy +mul r1.xy, r0.zwzz, l(0.250000, 0.250000, 0.000000, 0.000000) +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r2.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +div r0.z, cb0[3].x, r2.z +div r0.w, cb0[8].x, r0.z +max r0.w, r0.w, l(1.000000) +mul r0.z, r0.w, r0.z +div r1.z, cb0[8].y, r0.z +min r1.z, r1.z, l(1.000000) +mul r0.z, r0.z, r1.z +lt r1.w, r0.z, l(1.000000) +if_nz r1.w + mov o0.x, l(1.000000) + ret +endif +mad r3.xy, cb0[2].xyxx, r1.xyxx, cb0[2].zwzz +mul r2.xy, r2.zzzz, r3.xyxx +add r0.xy, r0.xyxx, cb0[7].xyxx +ftoi r3.xy, r0.xyxx +mov r3.zw, l(0,0,0,0) +ld_indexable(texture2d)(float,float,float,float) r3.xyz, r3.xyzw, t1.xyzw +mad r3.xyz, r3.xyzx, cb0[13].xxxx, cb0[13].yyyy +mul r4.xyz, r3.yyyy, cb0[10].xyzx +mad r3.xyw, r3.xxxx, cb0[9].xyxz, r4.xyxz +mad r3.xyz, r3.zzzz, cb0[11].xyzx, r3.xywx +dp3 r0.x, r3.xyzx, r3.xyzx +rsq r0.x, r0.x +mul r3.xyz, r0.xxxx, r3.xyzx +mul r0.x, r0.w, r0.w +div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x +mul r0.x, r0.x, cb0[3].z +mul r0.y, r1.z, r1.z +div r0.y, l(1.000000, 1.000000, 1.000000, 1.000000), r0.y +mul r0.x, r0.y, r0.x +mul r0.y, r0.z, l(0.050000) +mad r0.y, cb1[0].z, r0.y, l(1.000000) +mul r1.zw, r0.yyyy, cb1[0].xxxy +round_ne r1.zw, r1.zzzw +mad r4.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r4.xxxy, cb0[2].zzzw +mul r5.xy, r5.zzzz, r1.zwzz +mad r0.w, r0.z, l(0.050000), r0.y +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r1.z, r4.xyzx, r4.xyzx +dp3 r1.w, r3.xyzx, r4.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mul r4.xy, r0.wwww, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +mad r2.w, r0.z, l(0.050000), r0.w +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mul r4.yz, r2.wwww, cb1[0].xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +mad r0.z, r0.z, l(0.050000), r2.w +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r5.x, r4.yzwy, r4.yzwy +dp3 r4.y, r3.xyzx, r4.yzwy +rsq r4.z, r5.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.x, r0.x, l(1.000000) +mul r4.y, r4.z, r4.y +mad r3.w, r4.x, r3.w, r4.y +mul r4.xy, r0.zzzz, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r4.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r4.y, r4.w, r0.x, l(1.000000) +mad r3.w, r4.x, r4.y, r3.w +mul r4.xy, cb1[0].xyxx, l(0.707107, 0.707107, 0.000000, 0.000000) +mad r5.x, cb1[0].x, l(0.707107), -r4.y +add r5.y, r4.x, r4.y +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r4.z, r6.xyzx, r6.xyzx +dp3 r4.w, r3.xyzx, r6.xyzx +rsq r5.z, r4.z +mad_sat r4.w, r4.w, r5.z, -cb0[3].w +mad_sat r4.z, r4.z, r0.x, l(1.000000) +mul r4.z, r4.z, r4.w +mad r1.z, r1.w, r1.z, r4.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r1.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r1.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r1.w, r1.w, r0.x, l(1.000000) +mad r1.w, r4.z, r1.w, r3.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.000000), -cb1[0].y +mad r5.y, cb1[0].y, l(-0.000000), cb1[0].x +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.707107), -r4.y +mad r5.y, cb1[0].y, l(-0.707107), r4.x +mul r4.xy, r0.yyyy, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.x, r3.w, r1.z +mul r4.xy, r0.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r2.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r0.zzzz, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, -cb1[0].y, l(-0.000000), -cb1[0].x +mad r4.y, cb1[0].x, l(-0.000000), -cb1[0].y +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(-0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(-0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, cb1[0].x, l(0.000000), cb1[0].y +mad r4.y, cb1[0].y, l(0.000000), -cb1[0].x +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.y, r5.xyzx, r5.xyzx +dp3 r3.w, r3.xyzx, r5.xyzx +rsq r4.z, r0.y +mad_sat r3.w, r3.w, r4.z, -cb0[3].w +mad_sat r0.y, r0.y, r0.x, l(1.000000) +mad r0.y, r3.w, r0.y, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.w, r5.xyzx, r5.xyzx +dp3 r1.z, r3.xyzx, r5.xyzx +rsq r3.w, r0.w +mad_sat r1.z, r1.z, r3.w, -cb0[3].w +mad_sat r0.w, r0.w, r0.x, l(1.000000) +mad r0.w, r1.z, r0.w, r1.w +mul r1.zw, r2.wwww, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r5.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r1.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r1.z, r5.xyzx, r5.xyzx +dp3 r1.w, r3.xyzx, r5.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mad r0.w, r1.w, r1.z, r0.w +mul r1.zw, r0.zzzz, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r1.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.xy, cb0[2].xyxx, r1.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r1.xyxx +add r1.xyz, -r2.xyzx, r4.xyzx +dp3 r0.z, r1.xyzx, r1.xyzx +dp3 r1.x, r3.xyzx, r1.xyzx +rsq r1.y, r0.z +mad_sat r1.x, r1.x, r1.y, -cb0[3].w +mad_sat r0.x, r0.z, r0.x, l(1.000000) +mad r0.x, r1.x, r0.x, r0.w +mul r0.x, r0.x, cb0[4].y +mad r0.x, r0.y, cb0[4].x, r0.x +mul r0.x, r0.x, l(0.031250) +mad r0.y, r2.z, cb0[7].z, l(1.000000) +mul_sat r0.y, r0.y, cb0[7].w +dp2 r0.x, r0.xxxx, r0.yyyy +add_sat o0.x, -r0.x, l(1.000000) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_1_D3D11[] = +{ + 68, 88, 66, 67, 88, 61, + 73, 138, 161, 44, 32, 169, + 25, 90, 59, 57, 111, 182, + 205, 110, 1, 0, 0, 0, + 4, 67, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 68, 66, 0, 0, + 80, 0, 0, 0, 145, 16, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 89, 0, + 0, 4, 70, 142, 32, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 64, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 88, 24, 0, 4, 0, 112, + 16, 0, 1, 0, 0, 0, + 85, 85, 0, 0, 100, 32, + 0, 4, 50, 16, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 8, 0, 0, 0, 65, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 13, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 64, 0, 0, + 128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 56, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 62, 0, 0, + 128, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 14, 0, 0, 8, 130, 0, + 16, 0, 0, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 8, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 52, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 1, 0, 0, 0, 26, 128, + 32, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 51, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 66, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 49, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 31, 0, 4, 3, 58, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 18, 32, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 62, 0, 0, 1, + 21, 0, 0, 1, 50, 0, + 0, 11, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 2, 0, 0, 0, + 166, 10, 16, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 0, 0, + 0, 8, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 7, 0, 0, 0, + 27, 0, 0, 5, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 54, 0, 0, 8, + 194, 0, 16, 0, 3, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 45, 0, + 0, 137, 194, 0, 0, 128, + 67, 85, 21, 0, 114, 0, + 16, 0, 3, 0, 0, 0, + 70, 14, 16, 0, 3, 0, + 0, 0, 70, 126, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 11, 114, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 6, 128, 32, 0, 0, 0, + 0, 0, 13, 0, 0, 0, + 86, 133, 32, 0, 0, 0, + 0, 0, 13, 0, 0, 0, + 56, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 3, 0, + 0, 0, 70, 130, 32, 0, + 0, 0, 0, 0, 10, 0, + 0, 0, 50, 0, 0, 10, + 178, 0, 16, 0, 3, 0, + 0, 0, 6, 0, 16, 0, + 3, 0, 0, 0, 70, 136, + 32, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 70, 8, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 114, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 3, 0, + 0, 0, 70, 130, 32, 0, + 0, 0, 0, 0, 11, 0, + 0, 0, 70, 3, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 114, 0, 16, 0, + 3, 0, 0, 0, 6, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 14, 0, 0, 10, 18, 0, + 16, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 128, 63, 0, 0, 128, 63, + 0, 0, 128, 63, 0, 0, + 128, 63, 10, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 8, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 14, 0, + 0, 10, 34, 0, 16, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 128, 63, + 0, 0, 128, 63, 0, 0, + 128, 63, 0, 0, 128, 63, + 26, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 50, 0, + 0, 10, 34, 0, 16, 0, + 0, 0, 0, 0, 42, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 8, + 194, 0, 16, 0, 1, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 132, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 1, 0, 0, 0, 166, 14, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 1, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 9, 130, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 26, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 2, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 50, 32, + 0, 11, 130, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 8, 50, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 70, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 130, 0, 16, 0, 2, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 58, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 8, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 129, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 118, 114, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 5, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 4, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 50, 0, 0, 9, 66, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 58, 0, + 16, 0, 2, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 5, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 5, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 5, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 8, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 243, 4, 53, 63, + 243, 4, 53, 63, 0, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 243, 4, + 53, 63, 26, 0, 16, 128, + 65, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 7, + 34, 0, 16, 0, 5, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 5, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 7, 0, 0, 0, 166, 10, + 16, 0, 7, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 7, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 6, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 7, 0, 0, 0, 166, 10, + 16, 0, 7, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 7, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 12, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 189, 59, 179, + 26, 128, 32, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 34, 0, 16, 0, + 5, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 189, 59, 179, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 11, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 243, 4, + 53, 191, 26, 0, 16, 128, + 65, 0, 0, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 34, 0, 16, 0, 5, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 191, 10, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 13, 18, 0, + 16, 0, 4, 0, 0, 0, + 26, 128, 32, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 189, 187, 179, + 10, 128, 32, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 12, 34, 0, 16, 0, + 4, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 189, 187, 179, + 26, 128, 32, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 130, 0, 16, 0, + 3, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 245, 4, 53, 191, + 50, 0, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 241, 4, + 53, 191, 58, 0, 16, 128, + 65, 0, 0, 0, 3, 0, + 0, 0, 15, 0, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 22, 133, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 241, 4, 53, 191, 245, 4, + 53, 191, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 46, 222, 76, 50, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 12, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 222, + 76, 50, 10, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 8, 130, 0, + 16, 0, 3, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 239, 4, + 53, 191, 50, 0, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 247, 4, 53, 63, 58, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 15, 0, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 22, 133, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 247, 4, 53, 63, + 239, 4, 53, 191, 0, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 50, 32, + 0, 11, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 34, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 34, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 1, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 1, 0, 0, 0, 166, 14, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 1, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 2, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 50, 32, + 0, 11, 130, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 1, 0, 0, 0, 166, 14, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 18, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 8, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 26, 128, 32, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 18, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 61, 50, 0, + 0, 10, 34, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 7, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 32, 0, 8, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 58, 128, + 32, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 15, 0, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 6, 0, + 16, 0, 0, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 0, 32, 0, 8, + 18, 32, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 62, 0, + 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[14], immediateIndexed +dcl_constantbuffer cb1[2], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2darray (float,float,float,float) t0 +dcl_resource_texture2dms(0) (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 8 +round_ni r0.xy, v0.xyxx +mad r0.xy, r0.xyxx, l(4.000000, 4.000000, 0.000000, 0.000000), cb1[1].xyxx +mul r0.zw, r0.xxxy, cb0[1].xxxy +mul r1.xy, r0.zwzz, l(0.250000, 0.250000, 0.000000, 0.000000) +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r2.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +div r0.z, cb0[3].x, r2.z +div r0.w, cb0[8].x, r0.z +max r0.w, r0.w, l(1.000000) +mul r0.z, r0.w, r0.z +div r1.z, cb0[8].y, r0.z +min r1.z, r1.z, l(1.000000) +mul r0.z, r0.z, r1.z +lt r1.w, r0.z, l(1.000000) +if_nz r1.w + mov o0.x, l(1.000000) + ret +endif +mad r3.xy, cb0[2].xyxx, r1.xyxx, cb0[2].zwzz +mul r2.xy, r2.zzzz, r3.xyxx +add r0.xy, r0.xyxx, cb0[7].xyxx +ftoi r3.xy, r0.xyxx +mov r3.zw, l(0,0,0,0) +ldms_indexable(texture2dms)(float,float,float,float) r3.xyz, r3.xyzw, t1.xyzw, l(0) +mad r3.xyz, r3.xyzx, cb0[13].xxxx, cb0[13].yyyy +mul r4.xyz, r3.yyyy, cb0[10].xyzx +mad r3.xyw, r3.xxxx, cb0[9].xyxz, r4.xyxz +mad r3.xyz, r3.zzzz, cb0[11].xyzx, r3.xywx +dp3 r0.x, r3.xyzx, r3.xyzx +rsq r0.x, r0.x +mul r3.xyz, r0.xxxx, r3.xyzx +mul r0.x, r0.w, r0.w +div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x +mul r0.x, r0.x, cb0[3].z +mul r0.y, r1.z, r1.z +div r0.y, l(1.000000, 1.000000, 1.000000, 1.000000), r0.y +mul r0.x, r0.y, r0.x +mul r0.y, r0.z, l(0.050000) +mad r0.y, cb1[0].z, r0.y, l(1.000000) +mul r1.zw, r0.yyyy, cb1[0].xxxy +round_ne r1.zw, r1.zzzw +mad r4.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r4.xxxy, cb0[2].zzzw +mul r5.xy, r5.zzzz, r1.zwzz +mad r0.w, r0.z, l(0.050000), r0.y +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r1.z, r4.xyzx, r4.xyzx +dp3 r1.w, r3.xyzx, r4.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mul r4.xy, r0.wwww, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +mad r2.w, r0.z, l(0.050000), r0.w +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mul r4.yz, r2.wwww, cb1[0].xxyx +round_ne r4.yz, r4.yyzy +mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r5.xxyx +mad r0.z, r0.z, l(0.050000), r2.w +add r4.yzw, -r2.xxyz, r4.yyzw +dp3 r5.x, r4.yzwy, r4.yzwy +dp3 r4.y, r3.xyzx, r4.yzwy +rsq r4.z, r5.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.x, r0.x, l(1.000000) +mul r4.y, r4.z, r4.y +mad r3.w, r4.x, r3.w, r4.y +mul r4.xy, r0.zzzz, cb1[0].xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r4.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r4.y, r4.w, r0.x, l(1.000000) +mad r3.w, r4.x, r4.y, r3.w +mul r4.xy, cb1[0].xyxx, l(0.707107, 0.707107, 0.000000, 0.000000) +mad r5.x, cb1[0].x, l(0.707107), -r4.y +add r5.y, r4.x, r4.y +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r4.z, r6.xyzx, r6.xyzx +dp3 r4.w, r3.xyzx, r6.xyzx +rsq r5.z, r4.z +mad_sat r4.w, r4.w, r5.z, -cb0[3].w +mad_sat r4.z, r4.z, r0.x, l(1.000000) +mul r4.z, r4.z, r4.w +mad r1.z, r1.w, r1.z, r4.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r1.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r1.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r1.w, r1.w, r0.x, l(1.000000) +mad r1.w, r4.z, r1.w, r3.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.000000), -cb1[0].y +mad r5.y, cb1[0].y, l(-0.000000), cb1[0].x +mul r4.zw, r0.yyyy, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r6.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw +mul r7.xy, r7.zzzz, r4.zwzz +add r6.xyz, -r2.xyzx, r7.xyzx +dp3 r3.w, r6.xyzx, r6.xyzx +dp3 r4.z, r3.xyzx, r6.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r0.zzzz, r5.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mad r5.x, cb1[0].x, l(-0.707107), -r4.y +mad r5.y, cb1[0].y, l(-0.707107), r4.x +mul r4.xy, r0.yyyy, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.x, r3.w, r1.z +mul r4.xy, r0.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r2.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r4.xy, r0.zzzz, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, -cb1[0].y, l(-0.000000), -cb1[0].x +mad r4.y, cb1[0].x, l(-0.000000), -cb1[0].y +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(-0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(-0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mad r4.x, cb1[0].x, l(0.000000), cb1[0].y +mad r4.y, cb1[0].y, l(0.000000), -cb1[0].x +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.z, r4.z, r3.w, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.zw, r2.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r3.w, r5.xyzx, r5.xyzx +dp3 r4.z, r3.xyzx, r5.xyzx +rsq r4.w, r3.w +mad_sat r4.z, r4.z, r4.w, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.z, r3.w, r1.w +mul r4.xy, r0.zzzz, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx +mov r4.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r2.xyzx, r5.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +dp3 r4.x, r3.xyzx, r4.xyzx +rsq r4.y, r3.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r3.w, r3.w, r0.x, l(1.000000) +mad r1.w, r4.x, r3.w, r1.w +mul r3.w, cb1[0].y, l(-0.707107) +mad r4.x, cb1[0].x, l(0.707107), -r3.w +dp2 r4.y, cb1[0].yxyy, l(0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r0.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.y, r5.xyzx, r5.xyzx +dp3 r3.w, r3.xyzx, r5.xyzx +rsq r4.z, r0.y +mad_sat r3.w, r3.w, r4.z, -cb0[3].w +mad_sat r0.y, r0.y, r0.x, l(1.000000) +mad r0.y, r3.w, r0.y, r1.z +mul r4.zw, r0.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r0.w, r5.xyzx, r5.xyzx +dp3 r1.z, r3.xyzx, r5.xyzx +rsq r3.w, r0.w +mad_sat r1.z, r1.z, r3.w, -cb0[3].w +mad_sat r0.w, r0.w, r0.x, l(1.000000) +mad r0.w, r1.z, r0.w, r1.w +mul r1.zw, r2.wwww, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r5.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r5.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw +mul r6.xy, r6.zzzz, r1.zwzz +add r5.xyz, -r2.xyzx, r6.xyzx +dp3 r1.z, r5.xyzx, r5.xyzx +dp3 r1.w, r3.xyzx, r5.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, r0.x, l(1.000000) +mad r0.w, r1.w, r1.z, r0.w +mul r1.zw, r0.zzzz, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r1.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx +mov r1.z, l(0) +sample_l_indexable(texture2darray)(float,float,float,float) r4.z, r1.xyzx, t0.yzxw, s0, l(0.000000) +mad r1.xy, cb0[2].xyxx, r1.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r1.xyxx +add r1.xyz, -r2.xyzx, r4.xyzx +dp3 r0.z, r1.xyzx, r1.xyzx +dp3 r1.x, r3.xyzx, r1.xyzx +rsq r1.y, r0.z +mad_sat r1.x, r1.x, r1.y, -cb0[3].w +mad_sat r0.x, r0.z, r0.x, l(1.000000) +mad r0.x, r1.x, r0.x, r0.w +mul r0.x, r0.x, cb0[4].y +mad r0.x, r0.y, cb0[4].x, r0.x +mul r0.x, r0.x, l(0.031250) +mad r0.y, r2.z, cb0[7].z, l(1.000000) +mul_sat r0.y, r0.y, cb0[7].w +dp2 r0.x, r0.xxxx, r0.yyyy +add_sat o0.x, -r0.x, l(1.000000) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_2_D3D11[] = +{ + 68, 88, 66, 67, 23, 29, + 81, 73, 204, 196, 51, 175, + 37, 9, 63, 231, 195, 132, + 246, 163, 1, 0, 0, 0, + 12, 67, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 76, 66, 0, 0, + 80, 0, 0, 0, 147, 16, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 89, 0, + 0, 4, 70, 142, 32, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 64, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 88, 32, 0, 4, 0, 112, + 16, 0, 1, 0, 0, 0, + 85, 85, 0, 0, 100, 32, + 0, 4, 50, 16, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 18, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 8, 0, 0, 0, 65, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 13, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 64, 0, 0, + 128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 56, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 62, 0, 0, + 128, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 14, 0, 0, 8, 130, 0, + 16, 0, 0, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 8, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 52, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 14, 0, + 0, 8, 66, 0, 16, 0, + 1, 0, 0, 0, 26, 128, + 32, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 51, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 66, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 49, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 31, 0, 4, 3, 58, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 18, 32, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 62, 0, 0, 1, + 21, 0, 0, 1, 50, 0, + 0, 11, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 2, 0, 0, 0, + 166, 10, 16, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 0, 0, + 0, 8, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 7, 0, 0, 0, + 27, 0, 0, 5, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 54, 0, 0, 8, + 194, 0, 16, 0, 3, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 46, 0, + 0, 139, 2, 1, 0, 128, + 67, 85, 21, 0, 114, 0, + 16, 0, 3, 0, 0, 0, + 70, 14, 16, 0, 3, 0, + 0, 0, 70, 126, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 114, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 6, 128, 32, 0, + 0, 0, 0, 0, 13, 0, + 0, 0, 86, 133, 32, 0, + 0, 0, 0, 0, 13, 0, + 0, 0, 56, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 3, 0, 0, 0, 70, 130, + 32, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 50, 0, + 0, 10, 178, 0, 16, 0, + 3, 0, 0, 0, 6, 0, + 16, 0, 3, 0, 0, 0, + 70, 136, 32, 0, 0, 0, + 0, 0, 9, 0, 0, 0, + 70, 8, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 114, 0, 16, 0, 3, 0, + 0, 0, 166, 10, 16, 0, + 3, 0, 0, 0, 70, 130, + 32, 0, 0, 0, 0, 0, + 11, 0, 0, 0, 70, 3, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 68, 0, + 0, 5, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 114, 0, + 16, 0, 3, 0, 0, 0, + 6, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 14, 0, 0, 10, + 18, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 63, 0, 0, + 128, 63, 0, 0, 128, 63, + 0, 0, 128, 63, 10, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 8, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 14, 0, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 128, 63, 0, 0, 128, 63, + 0, 0, 128, 63, 0, 0, + 128, 63, 26, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 50, 0, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 8, 194, 0, 16, 0, + 1, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 132, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 26, 0, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 8, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 58, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 8, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 129, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 50, 0, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 141, 2, 2, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 5, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 50, 0, 0, 9, + 66, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 58, 0, 16, 0, 2, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 5, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 5, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 9, 66, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 5, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 8, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 243, 4, + 53, 63, 243, 4, 53, 63, + 0, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 63, 26, 0, + 16, 128, 65, 0, 0, 0, + 4, 0, 0, 0, 0, 0, + 0, 7, 34, 0, 16, 0, + 5, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 6, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 6, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 7, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 12, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 34, 0, + 16, 0, 5, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 6, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 7, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 191, 26, 0, + 16, 128, 65, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 5, 0, 0, 0, 26, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 243, 4, 53, 191, + 10, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 13, + 18, 0, 16, 0, 4, 0, + 0, 0, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 187, 179, 10, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 12, 34, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 187, 179, 26, 128, 32, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 8, 130, 0, + 16, 0, 3, 0, 0, 0, + 26, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 245, 4, + 53, 191, 50, 0, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 241, 4, 53, 191, 58, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 15, 0, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 22, 133, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 241, 4, 53, 191, + 245, 4, 53, 191, 0, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 141, 2, 2, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 9, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 128, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 46, 222, + 76, 50, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 12, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 46, 222, 76, 50, 10, 128, + 32, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 8, + 130, 0, 16, 0, 3, 0, + 0, 0, 26, 128, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 239, 4, 53, 191, 50, 0, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 128, + 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 247, 4, 53, 63, + 58, 0, 16, 128, 65, 0, + 0, 0, 3, 0, 0, 0, + 15, 0, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 22, 133, 32, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 247, 4, + 53, 63, 239, 4, 53, 191, + 0, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 34, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 1, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 2, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 1, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 50, 0, 16, 0, 1, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 141, + 2, 2, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 1, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 8, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 128, + 32, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 18, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 61, + 50, 0, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 2, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 7, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 32, + 0, 8, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 58, 128, 32, 0, 0, 0, + 0, 0, 7, 0, 0, 0, + 15, 0, 0, 7, 18, 0, + 16, 0, 0, 0, 0, 0, + 6, 0, 16, 0, 0, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 0, 32, + 0, 8, 18, 32, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 62, 0, 0, 1 +}; + +namespace Generated +{ + void CoarseAO_PS::Create(DevicePointer Device) + { + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_0_D3D11, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_0_D3D11)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_1_D3D11, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_1_D3D11)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_2_D3D11, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_2_D3D11)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_0_D3D11, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_0_D3D11)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_1_D3D11, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_1_D3D11)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_2_D3D11, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_2_D3D11)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_0_D3D11, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_0_D3D11)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_1_D3D11, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_1_D3D11)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_2_D3D11, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_2_D3D11)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_0_D3D11, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_0_D3D11)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_1_D3D11, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_1_D3D11)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_2_D3D11, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_2_D3D11)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_0_D3D11, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_0_D3D11)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_1_D3D11, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_1_D3D11)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_2_D3D11, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_2_D3D11)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_0_D3D11, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_0_D3D11)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_1_D3D11, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_1_D3D11)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_2_D3D11, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_2_D3D11)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_0_D3D11, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_0_D3D11)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_1_D3D11, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_1_D3D11)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_2_D3D11, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_2_D3D11)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_0_D3D11, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_0_D3D11)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_1_D3D11, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_1_D3D11)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_2_D3D11, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_2_D3D11)); + } + + void CoarseAO_PS::Release(DevicePointer Device) + { + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Release(Device); + } +} diff --git a/src/shaders/out/d3d11/CoarseAO_PS.h b/src/shaders/out/d3d11/CoarseAO_PS.h new file mode 100644 index 0000000..3b3b104 --- /dev/null +++ b/src/shaders/out/d3d11/CoarseAO_PS.h @@ -0,0 +1,72 @@ +//! This file was auto-generated. Do not modify manually. +#pragma once + +namespace Generated +{ + +namespace ShaderPermutations +{ + +#ifndef ENABLE_FOREGROUND_AO_DEFINED +#define ENABLE_FOREGROUND_AO_DEFINED + enum ENABLE_FOREGROUND_AO + { + ENABLE_FOREGROUND_AO_0, + ENABLE_FOREGROUND_AO_1, + ENABLE_FOREGROUND_AO_COUNT, + }; +#endif + +#ifndef ENABLE_BACKGROUND_AO_DEFINED +#define ENABLE_BACKGROUND_AO_DEFINED + enum ENABLE_BACKGROUND_AO + { + ENABLE_BACKGROUND_AO_0, + ENABLE_BACKGROUND_AO_1, + ENABLE_BACKGROUND_AO_COUNT, + }; +#endif + +#ifndef ENABLE_DEPTH_THRESHOLD_DEFINED +#define ENABLE_DEPTH_THRESHOLD_DEFINED + enum ENABLE_DEPTH_THRESHOLD + { + ENABLE_DEPTH_THRESHOLD_0, + ENABLE_DEPTH_THRESHOLD_1, + ENABLE_DEPTH_THRESHOLD_COUNT, + }; +#endif + +#ifndef FETCH_GBUFFER_NORMAL_DEFINED +#define FETCH_GBUFFER_NORMAL_DEFINED + enum FETCH_GBUFFER_NORMAL + { + FETCH_GBUFFER_NORMAL_0, + FETCH_GBUFFER_NORMAL_1, + FETCH_GBUFFER_NORMAL_2, + FETCH_GBUFFER_NORMAL_COUNT, + }; +#endif + +}; + +struct CoarseAO_PS +{ + void Create(DevicePointer Device); + void Release(DevicePointer Device); + PixelShader& Get(ShaderPermutations::ENABLE_FOREGROUND_AO A, ShaderPermutations::ENABLE_BACKGROUND_AO B, ShaderPermutations::ENABLE_DEPTH_THRESHOLD C, ShaderPermutations::FETCH_GBUFFER_NORMAL D) + { + return m_Shader[A][B][C][D]; + } + +private: + PixelShader m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_COUNT][ShaderPermutations::ENABLE_BACKGROUND_AO_COUNT][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_COUNT][ShaderPermutations::FETCH_GBUFFER_NORMAL_COUNT]; +#if _WIN32 + static_assert(ShaderPermutations::ENABLE_FOREGROUND_AO_COUNT == 2, ""); + static_assert(ShaderPermutations::ENABLE_BACKGROUND_AO_COUNT == 2, ""); + static_assert(ShaderPermutations::ENABLE_DEPTH_THRESHOLD_COUNT == 2, ""); + static_assert(ShaderPermutations::FETCH_GBUFFER_NORMAL_COUNT == 3, ""); +#endif +}; + +}; diff --git a/src/shaders/out/d3d11/CopyDepth_PS.cpp b/src/shaders/out/d3d11/CopyDepth_PS.cpp new file mode 100644 index 0000000..f4d28e0 --- /dev/null +++ b/src/shaders/out/d3d11/CopyDepth_PS.cpp @@ -0,0 +1,232 @@ +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[8], immediateIndexed +dcl_resource_texture2d (float,float,float,float) t0 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 1 +add r0.xy, v0.xyxx, cb0[7].xyxx +ftoi r0.xy, r0.xyxx +mov r0.zw, l(0,0,0,0) +ld_indexable(texture2d)(float,float,float,float) r0.x, r0.xyzw, t0.xyzw +mov o0.x, r0.x +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CopyDepth_PS_RESOLVE_DEPTH_0_D3D11[] = +{ + 68, 88, 66, 67, 228, 69, + 237, 239, 123, 187, 43, 197, + 74, 99, 183, 158, 179, 90, + 27, 191, 1, 0, 0, 0, + 160, 1, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 224, 0, 0, 0, + 80, 0, 0, 0, 56, 0, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 88, 24, + 0, 4, 0, 112, 16, 0, + 0, 0, 0, 0, 85, 85, + 0, 0, 100, 32, 0, 4, + 50, 16, 16, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 101, 0, 0, 3, 18, 32, + 16, 0, 0, 0, 0, 0, + 104, 0, 0, 2, 1, 0, + 0, 0, 0, 0, 0, 8, + 50, 0, 16, 0, 0, 0, + 0, 0, 70, 16, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 27, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 54, 0, 0, 8, 194, 0, + 16, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 45, 0, 0, 137, + 194, 0, 0, 128, 67, 85, + 21, 0, 18, 0, 16, 0, + 0, 0, 0, 0, 70, 14, + 16, 0, 0, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 54, 0, 0, 5, + 18, 32, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 62, 0, + 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[8], immediateIndexed +dcl_resource_texture2dms(0) (float,float,float,float) t0 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 1 +add r0.xy, v0.xyxx, cb0[7].xyxx +ftoi r0.xy, r0.xyxx +mov r0.zw, l(0,0,0,0) +ldms_indexable(texture2dms)(float,float,float,float) r0.x, r0.xyzw, t0.xyzw, l(0) +mov o0.x, r0.x +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_CopyDepth_PS_RESOLVE_DEPTH_1_D3D11[] = +{ + 68, 88, 66, 67, 233, 109, + 46, 61, 185, 115, 76, 225, + 218, 100, 154, 70, 77, 132, + 86, 247, 1, 0, 0, 0, + 168, 1, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 232, 0, 0, 0, + 80, 0, 0, 0, 58, 0, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 88, 32, + 0, 4, 0, 112, 16, 0, + 0, 0, 0, 0, 85, 85, + 0, 0, 100, 32, 0, 4, + 50, 16, 16, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 101, 0, 0, 3, 18, 32, + 16, 0, 0, 0, 0, 0, + 104, 0, 0, 2, 1, 0, + 0, 0, 0, 0, 0, 8, + 50, 0, 16, 0, 0, 0, + 0, 0, 70, 16, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 27, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 54, 0, 0, 8, 194, 0, + 16, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 46, 0, 0, 139, + 2, 1, 0, 128, 67, 85, + 21, 0, 18, 0, 16, 0, + 0, 0, 0, 0, 70, 14, + 16, 0, 0, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 18, 32, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 62, 0, 0, 1 +}; + +namespace Generated +{ + void CopyDepth_PS::Create(DevicePointer Device) + { + m_Shader[ShaderPermutations::RESOLVE_DEPTH_0].Create(Device, g_CopyDepth_PS_RESOLVE_DEPTH_0_D3D11, sizeof(g_CopyDepth_PS_RESOLVE_DEPTH_0_D3D11)); + m_Shader[ShaderPermutations::RESOLVE_DEPTH_1].Create(Device, g_CopyDepth_PS_RESOLVE_DEPTH_1_D3D11, sizeof(g_CopyDepth_PS_RESOLVE_DEPTH_1_D3D11)); + } + + void CopyDepth_PS::Release(DevicePointer Device) + { + m_Shader[ShaderPermutations::RESOLVE_DEPTH_0].Release(Device); + m_Shader[ShaderPermutations::RESOLVE_DEPTH_1].Release(Device); + } +} diff --git a/src/shaders/out/d3d11/CopyDepth_PS.h b/src/shaders/out/d3d11/CopyDepth_PS.h new file mode 100644 index 0000000..b3000a4 --- /dev/null +++ b/src/shaders/out/d3d11/CopyDepth_PS.h @@ -0,0 +1,38 @@ +//! This file was auto-generated. Do not modify manually. +#pragma once + +namespace Generated +{ + +namespace ShaderPermutations +{ + +#ifndef RESOLVE_DEPTH_DEFINED +#define RESOLVE_DEPTH_DEFINED + enum RESOLVE_DEPTH + { + RESOLVE_DEPTH_0, + RESOLVE_DEPTH_1, + RESOLVE_DEPTH_COUNT, + }; +#endif + +}; + +struct CopyDepth_PS +{ + void Create(DevicePointer Device); + void Release(DevicePointer Device); + PixelShader& Get(ShaderPermutations::RESOLVE_DEPTH A) + { + return m_Shader[A]; + } + +private: + PixelShader m_Shader[ShaderPermutations::RESOLVE_DEPTH_COUNT]; +#if _WIN32 + static_assert(ShaderPermutations::RESOLVE_DEPTH_COUNT == 2, ""); +#endif +}; + +}; diff --git a/src/shaders/out/d3d11/DebugAO_PS.cpp b/src/shaders/out/d3d11/DebugAO_PS.cpp new file mode 100644 index 0000000..a7f73d7 --- /dev/null +++ b/src/shaders/out/d3d11/DebugAO_PS.cpp @@ -0,0 +1,6717 @@ +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[5], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_resource_texture2d (float,float,float,float) t0 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 7 +sample_l_indexable(texture2d)(float,float,float,float) r0.y, v1.xyxx, t0.yxzw, s0, l(0.000000) +mul r1.xy, v0.xyxx, l(0.250000, 0.250000, 0.000000, 0.000000) +sample_indexable(texture2d)(float,float,float,float) r1.xyz, r1.xyxx, t1.xyzw, s1 +div r0.w, cb0[3].x, r0.y +lt r1.w, r0.w, l(1.000000) +if_nz r1.w + mov o0.xyzw, l(1.000000,1.000000,1.000000,1.000000) + ret +endif +mad r2.xy, cb0[2].yxyy, v1.yxyy, cb0[2].wzww +mul r0.xz, r0.yyyy, r2.xxyx +mul r1.w, r0.w, l(0.050000) +mov r2.y, cb0[1].z +mov r2.z, l(0) +add r2.xy, r2.yzyy, v1.xyxx +sample_l_indexable(texture2d)(float,float,float,float) r3.x, r2.xyxx, t0.xyzw, s0, l(0.000000) +mad r2.xy, cb0[2].xyxx, r2.xyxx, cb0[2].zwzz +mul r3.yz, r3.xxxx, r2.xxyx +mov r2.y, -cb0[1].z +mov r2.z, l(0) +add r2.xy, r2.yzyy, v1.xyxx +sample_l_indexable(texture2d)(float,float,float,float) r4.x, r2.xyxx, t0.xyzw, s0, l(0.000000) +mad r2.xy, cb0[2].xyxx, r2.xyxx, cb0[2].zwzz +mul r4.yz, r4.xxxx, r2.xxyx +mov r2.z, l(0) +mov r2.x, cb0[1].w +add r2.xy, r2.xzxx, v1.yxyy +sample_l_indexable(texture2d)(float,float,float,float) r5.y, r2.yxyy, t0.yxzw, s0, l(0.000000) +mad r2.xy, cb0[2].yxyy, r2.xyxx, cb0[2].wzww +mul r5.xz, r5.yyyy, r2.xxyx +mov r2.z, l(0) +mov r2.x, -cb0[1].w +add r2.xy, r2.xzxx, v1.yxyy +sample_l_indexable(texture2d)(float,float,float,float) r6.y, r2.yxyy, t0.yxzw, s0, l(0.000000) +mad r2.xy, cb0[2].yxyy, r2.xyxx, cb0[2].wzww +mul r6.xz, r6.yyyy, r2.xxyx +add r2.xyz, -r0.yzxy, r3.xyzx +add r3.xyz, r0.yzxy, -r4.xyzx +dp3 r2.w, r2.xyzx, r2.xyzx +dp3 r3.w, r3.xyzx, r3.xyzx +lt r2.w, r2.w, r3.w +movc r2.xyz, r2.wwww, r2.xyzx, r3.xyzx +add r3.xyz, -r0.xyzx, r5.xyzx +add r4.xyz, r0.xyzx, -r6.xyzx +dp3 r2.w, r3.xyzx, r3.xyzx +dp3 r3.w, r4.xyzx, r4.xyzx +lt r2.w, r2.w, r3.w +movc r3.xyz, r2.wwww, r3.xyzx, r4.xyzx +mul r4.xyz, r2.xyzx, r3.xyzx +mad r2.xyz, r2.zxyz, r3.yzxy, -r4.xyzx +dp3 r2.w, r2.xyzx, r2.xyzx +rsq r2.w, r2.w +mul r2.xyz, r2.wwww, r2.xyzx +mad r1.z, r1.z, r1.w, l(1.000000) +mul r3.xy, r1.xyxx, r1.zzzz +round_ne r3.xy, r3.xyxx +mul r3.zw, cb0[1].zzzw, l(0.000000, 0.000000, 4.000000, 4.000000) +mad r3.xy, r3.xyxx, r3.zwzz, v1.xyxx +sample_l_indexable(texture2d)(float,float,float,float) r4.z, r3.xyxx, t0.yzxw, s0, l(0.000000) +mad r3.xy, cb0[2].xyxx, r3.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r3.xyxx +mad r1.w, r0.w, l(0.050000), r1.z +add r4.xyz, -r0.zxyz, r4.xyzx +dp3 r2.w, r4.xyzx, r4.xyzx +dp3 r3.x, r2.xyzx, r4.xyzx +rsq r3.y, r2.w +mad_sat r3.x, r3.x, r3.y, -cb0[3].w +mad_sat r2.w, r2.w, cb0[3].z, l(1.000000) +mul r4.xy, r1.xyxx, r1.wwww +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, r3.zwzz, v1.xyxx +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r4.xyxx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +mad r3.y, r0.w, l(0.050000), r1.w +add r4.xyz, -r0.zxyz, r5.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +dp3 r4.x, r2.xyzx, r4.xyzx +rsq r4.y, r4.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r4.y, r4.w, cb0[3].z, l(1.000000) +mul r4.zw, r1.xxxy, r3.yyyy +round_ne r4.zw, r4.zzzw +mad r4.zw, r4.zzzw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r4.zwzz, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r4.zzzw, cb0[2].zzzw +mul r5.xy, r5.zzzz, r4.zwzz +mad r0.w, r0.w, l(0.050000), r3.y +add r5.xyz, -r0.zxyz, r5.xyzx +dp3 r4.z, r5.xyzx, r5.xyzx +dp3 r4.w, r2.xyzx, r5.xyzx +rsq r5.x, r4.z +mad_sat r4.w, r4.w, r5.x, -cb0[3].w +mad_sat r4.z, r4.z, cb0[3].z, l(1.000000) +mul r4.z, r4.z, r4.w +mad r4.x, r4.x, r4.y, r4.z +mul r4.yz, r1.xxyx, r0.wwww +round_ne r4.yz, r4.yyzy +mad r4.yz, r4.yyzy, r3.zzwz, v1.xxyx +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r4.yzyy, t0.yzxw, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r4.yyzy, cb0[2].zzwz +mul r5.xy, r5.zzzz, r4.yzyy +add r4.yzw, -r0.zzxy, r5.xxyz +dp3 r5.x, r4.yzwy, r4.yzwy +dp3 r4.y, r2.xyzx, r4.yzwy +rsq r4.z, r5.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.x, cb0[3].z, l(1.000000) +mad r4.x, r4.y, r4.z, r4.x +mul r4.yz, r1.xxyx, l(0.000000, 0.707107, 0.707107, 0.000000) +mad r5.x, r1.x, l(0.707107), -r4.z +add r5.y, r4.y, r4.z +mul r5.zw, r1.zzzz, r5.xxxy +round_ne r5.zw, r5.zzzw +mad r5.zw, r5.zzzw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r5.zwzz, t0.yzxw, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r5.zzzw, cb0[2].zzzw +mul r6.xy, r6.zzzz, r5.zwzz +add r6.xyz, -r0.zxyz, r6.xyzx +dp3 r4.w, r6.xyzx, r6.xyzx +dp3 r5.z, r2.xyzx, r6.xyzx +rsq r5.w, r4.w +mad_sat r5.z, r5.z, r5.w, -cb0[3].w +mad_sat r4.w, r4.w, cb0[3].z, l(1.000000) +mul r4.w, r4.w, r5.z +mad r2.w, r3.x, r2.w, r4.w +mul r5.zw, r1.wwww, r5.xxxy +round_ne r5.zw, r5.zzzw +mad r5.zw, r5.zzzw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r5.zwzz, t0.yzxw, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r5.zzzw, cb0[2].zzzw +mul r6.xy, r6.zzzz, r5.zwzz +add r6.xyz, -r0.zxyz, r6.xyzx +dp3 r3.x, r6.xyzx, r6.xyzx +dp3 r4.w, r2.xyzx, r6.xyzx +rsq r5.z, r3.x +mad_sat r4.w, r4.w, r5.z, -cb0[3].w +mad_sat r3.x, r3.x, cb0[3].z, l(1.000000) +mad r3.x, r4.w, r3.x, r4.x +mul r4.xw, r3.yyyy, r5.xxxy +round_ne r4.xw, r4.xxxw +mad r4.xw, r4.xxxw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r4.xwxx, t0.yzxw, s0, l(0.000000) +mad r4.xw, cb0[2].xxxy, r4.xxxw, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.xwxx +add r6.xyz, -r0.zxyz, r6.xyzx +dp3 r4.x, r6.xyzx, r6.xyzx +dp3 r4.w, r2.xyzx, r6.xyzx +rsq r5.z, r4.x +mad_sat r4.w, r4.w, r5.z, -cb0[3].w +mad_sat r4.x, r4.x, cb0[3].z, l(1.000000) +mad r3.x, r4.w, r4.x, r3.x +mul r4.xw, r0.wwww, r5.xxxy +round_ne r4.xw, r4.xxxw +mad r4.xw, r4.xxxw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r4.xwxx, t0.yzxw, s0, l(0.000000) +mad r4.xw, cb0[2].xxxy, r4.xxxw, cb0[2].zzzw +mul r5.xy, r5.zzzz, r4.xwxx +add r5.xyz, -r0.zxyz, r5.xyzx +dp3 r4.x, r5.xyzx, r5.xyzx +dp3 r4.w, r2.xyzx, r5.xyzx +rsq r5.x, r4.x +mad_sat r4.w, r4.w, r5.x, -cb0[3].w +mad_sat r4.x, r4.x, cb0[3].z, l(1.000000) +mad r3.x, r4.w, r4.x, r3.x +mad r5.x, r1.x, l(-0.000000), -r1.y +mad r5.y, r1.y, l(-0.000000), r1.x +mul r4.xw, r1.zzzz, r5.xxxy +round_ne r4.xw, r4.xxxw +mad r4.xw, r4.xxxw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r4.xwxx, t0.yzxw, s0, l(0.000000) +mad r4.xw, cb0[2].xxxy, r4.xxxw, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.xwxx +add r6.xyz, -r0.zxyz, r6.xyzx +dp3 r4.x, r6.xyzx, r6.xyzx +dp3 r4.w, r2.xyzx, r6.xyzx +rsq r5.z, r4.x +mad_sat r4.w, r4.w, r5.z, -cb0[3].w +mad_sat r4.x, r4.x, cb0[3].z, l(1.000000) +mad r2.w, r4.w, r4.x, r2.w +mul r4.xw, r1.wwww, r5.xxxy +round_ne r4.xw, r4.xxxw +mad r4.xw, r4.xxxw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r4.xwxx, t0.yzxw, s0, l(0.000000) +mad r4.xw, cb0[2].xxxy, r4.xxxw, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.xwxx +add r6.xyz, -r0.zxyz, r6.xyzx +dp3 r4.x, r6.xyzx, r6.xyzx +dp3 r4.w, r2.xyzx, r6.xyzx +rsq r5.z, r4.x +mad_sat r4.w, r4.w, r5.z, -cb0[3].w +mad_sat r4.x, r4.x, cb0[3].z, l(1.000000) +mad r3.x, r4.w, r4.x, r3.x +mul r4.xw, r3.yyyy, r5.xxxy +round_ne r4.xw, r4.xxxw +mad r4.xw, r4.xxxw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r4.xwxx, t0.yzxw, s0, l(0.000000) +mad r4.xw, cb0[2].xxxy, r4.xxxw, cb0[2].zzzw +mul r6.xy, r6.zzzz, r4.xwxx +add r6.xyz, -r0.zxyz, r6.xyzx +dp3 r4.x, r6.xyzx, r6.xyzx +dp3 r4.w, r2.xyzx, r6.xyzx +rsq r5.z, r4.x +mad_sat r4.w, r4.w, r5.z, -cb0[3].w +mad_sat r4.x, r4.x, cb0[3].z, l(1.000000) +mad r3.x, r4.w, r4.x, r3.x +mul r4.xw, r0.wwww, r5.xxxy +round_ne r4.xw, r4.xxxw +mad r4.xw, r4.xxxw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r4.xwxx, t0.yzxw, s0, l(0.000000) +mad r4.xw, cb0[2].xxxy, r4.xxxw, cb0[2].zzzw +mul r5.xy, r5.zzzz, r4.xwxx +add r5.xyz, -r0.zxyz, r5.xyzx +dp3 r4.x, r5.xyzx, r5.xyzx +dp3 r4.w, r2.xyzx, r5.xyzx +rsq r5.x, r4.x +mad_sat r4.w, r4.w, r5.x, -cb0[3].w +mad_sat r4.x, r4.x, cb0[3].z, l(1.000000) +mad r3.x, r4.w, r4.x, r3.x +mad r5.x, r1.x, l(-0.707107), -r4.z +mad r5.y, r1.y, l(-0.707107), r4.y +mul r4.xy, r1.zzzz, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, r3.zwzz, v1.xyxx +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r4.xyxx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r0.zxyz, r6.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +dp3 r4.x, r2.xyzx, r4.xyzx +rsq r4.y, r4.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r4.y, r4.w, cb0[3].z, l(1.000000) +mad r2.w, r4.x, r4.y, r2.w +mul r4.xy, r1.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, r3.zwzz, v1.xyxx +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r4.xyxx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r0.zxyz, r6.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +dp3 r4.x, r2.xyzx, r4.xyzx +rsq r4.y, r4.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r4.y, r4.w, cb0[3].z, l(1.000000) +mad r3.x, r4.x, r4.y, r3.x +mul r4.xy, r3.yyyy, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, r3.zwzz, v1.xyxx +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r4.xyxx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r4.xyxx +add r4.xyz, -r0.zxyz, r6.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +dp3 r4.x, r2.xyzx, r4.xyzx +rsq r4.y, r4.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r4.y, r4.w, cb0[3].z, l(1.000000) +mad r3.x, r4.x, r4.y, r3.x +mul r4.xy, r0.wwww, r5.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, r3.zwzz, v1.xyxx +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r4.xyxx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r0.zxyz, r5.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +dp3 r4.x, r2.xyzx, r4.xyzx +rsq r4.y, r4.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r4.y, r4.w, cb0[3].z, l(1.000000) +mad r3.x, r4.x, r4.y, r3.x +mad r4.x, -r1.y, l(-0.000000), -r1.x +mad r4.y, r1.x, l(-0.000000), -r1.y +mul r4.zw, r1.zzzz, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r4.zw, r4.zzzw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r4.zwzz, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r4.zzzw, cb0[2].zzzw +mul r5.xy, r5.zzzz, r4.zwzz +add r5.xyz, -r0.zxyz, r5.xyzx +dp3 r4.z, r5.xyzx, r5.xyzx +dp3 r4.w, r2.xyzx, r5.xyzx +rsq r5.x, r4.z +mad_sat r4.w, r4.w, r5.x, -cb0[3].w +mad_sat r4.z, r4.z, cb0[3].z, l(1.000000) +mad r2.w, r4.w, r4.z, r2.w +mul r4.zw, r1.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r4.zw, r4.zzzw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r4.zwzz, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r4.zzzw, cb0[2].zzzw +mul r5.xy, r5.zzzz, r4.zwzz +add r5.xyz, -r0.zxyz, r5.xyzx +dp3 r4.z, r5.xyzx, r5.xyzx +dp3 r4.w, r2.xyzx, r5.xyzx +rsq r5.x, r4.z +mad_sat r4.w, r4.w, r5.x, -cb0[3].w +mad_sat r4.z, r4.z, cb0[3].z, l(1.000000) +mad r3.x, r4.w, r4.z, r3.x +mul r4.zw, r3.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r4.zw, r4.zzzw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r4.zwzz, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r4.zzzw, cb0[2].zzzw +mul r5.xy, r5.zzzz, r4.zwzz +add r5.xyz, -r0.zxyz, r5.xyzx +dp3 r4.z, r5.xyzx, r5.xyzx +dp3 r4.w, r2.xyzx, r5.xyzx +rsq r5.x, r4.z +mad_sat r4.w, r4.w, r5.x, -cb0[3].w +mad_sat r4.z, r4.z, cb0[3].z, l(1.000000) +mad r3.x, r4.w, r4.z, r3.x +mul r4.xy, r0.wwww, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, r3.zwzz, v1.xyxx +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r4.xyxx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r0.zxyz, r5.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +dp3 r4.x, r2.xyzx, r4.xyzx +rsq r4.y, r4.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r4.y, r4.w, cb0[3].z, l(1.000000) +mad r3.x, r4.x, r4.y, r3.x +mul r4.x, r1.y, l(-0.707107) +mad r4.x, r1.x, l(-0.707107), -r4.x +dp2 r4.y, r1.yxyy, l(-0.707107, -0.707107, 0.000000, 0.000000) +mul r4.zw, r1.zzzz, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r4.zw, r4.zzzw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r4.zwzz, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r4.zzzw, cb0[2].zzzw +mul r5.xy, r5.zzzz, r4.zwzz +add r5.xyz, -r0.zxyz, r5.xyzx +dp3 r4.z, r5.xyzx, r5.xyzx +dp3 r4.w, r2.xyzx, r5.xyzx +rsq r5.x, r4.z +mad_sat r4.w, r4.w, r5.x, -cb0[3].w +mad_sat r4.z, r4.z, cb0[3].z, l(1.000000) +mad r2.w, r4.w, r4.z, r2.w +mul r4.zw, r1.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r4.zw, r4.zzzw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r4.zwzz, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r4.zzzw, cb0[2].zzzw +mul r5.xy, r5.zzzz, r4.zwzz +add r5.xyz, -r0.zxyz, r5.xyzx +dp3 r4.z, r5.xyzx, r5.xyzx +dp3 r4.w, r2.xyzx, r5.xyzx +rsq r5.x, r4.z +mad_sat r4.w, r4.w, r5.x, -cb0[3].w +mad_sat r4.z, r4.z, cb0[3].z, l(1.000000) +mad r3.x, r4.w, r4.z, r3.x +mul r4.zw, r3.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r4.zw, r4.zzzw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r4.zwzz, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r4.zzzw, cb0[2].zzzw +mul r5.xy, r5.zzzz, r4.zwzz +add r5.xyz, -r0.zxyz, r5.xyzx +dp3 r4.z, r5.xyzx, r5.xyzx +dp3 r4.w, r2.xyzx, r5.xyzx +rsq r5.x, r4.z +mad_sat r4.w, r4.w, r5.x, -cb0[3].w +mad_sat r4.z, r4.z, cb0[3].z, l(1.000000) +mad r3.x, r4.w, r4.z, r3.x +mul r4.xy, r0.wwww, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, r3.zwzz, v1.xyxx +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r4.xyxx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r0.zxyz, r5.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +dp3 r4.x, r2.xyzx, r4.xyzx +rsq r4.y, r4.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r4.y, r4.w, cb0[3].z, l(1.000000) +mad r3.x, r4.x, r4.y, r3.x +mad r4.x, r1.x, l(0.000000), r1.y +mad r4.y, r1.y, l(0.000000), -r1.x +mul r4.zw, r1.zzzz, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r4.zw, r4.zzzw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r4.zwzz, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r4.zzzw, cb0[2].zzzw +mul r5.xy, r5.zzzz, r4.zwzz +add r5.xyz, -r0.zxyz, r5.xyzx +dp3 r4.z, r5.xyzx, r5.xyzx +dp3 r4.w, r2.xyzx, r5.xyzx +rsq r5.x, r4.z +mad_sat r4.w, r4.w, r5.x, -cb0[3].w +mad_sat r4.z, r4.z, cb0[3].z, l(1.000000) +mad r2.w, r4.w, r4.z, r2.w +mul r4.zw, r1.wwww, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r4.zw, r4.zzzw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r4.zwzz, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r4.zzzw, cb0[2].zzzw +mul r5.xy, r5.zzzz, r4.zwzz +add r5.xyz, -r0.zxyz, r5.xyzx +dp3 r4.z, r5.xyzx, r5.xyzx +dp3 r4.w, r2.xyzx, r5.xyzx +rsq r5.x, r4.z +mad_sat r4.w, r4.w, r5.x, -cb0[3].w +mad_sat r4.z, r4.z, cb0[3].z, l(1.000000) +mad r3.x, r4.w, r4.z, r3.x +mul r4.zw, r3.yyyy, r4.xxxy +round_ne r4.zw, r4.zzzw +mad r4.zw, r4.zzzw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r4.zwzz, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r4.zzzw, cb0[2].zzzw +mul r5.xy, r5.zzzz, r4.zwzz +add r5.xyz, -r0.zxyz, r5.xyzx +dp3 r4.z, r5.xyzx, r5.xyzx +dp3 r4.w, r2.xyzx, r5.xyzx +rsq r5.x, r4.z +mad_sat r4.w, r4.w, r5.x, -cb0[3].w +mad_sat r4.z, r4.z, cb0[3].z, l(1.000000) +mad r3.x, r4.w, r4.z, r3.x +mul r4.xy, r0.wwww, r4.xyxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, r3.zwzz, v1.xyxx +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r4.xyxx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +add r4.xyz, -r0.zxyz, r5.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +dp3 r4.x, r2.xyzx, r4.xyzx +rsq r4.y, r4.w +mad_sat r4.x, r4.x, r4.y, -cb0[3].w +mad_sat r4.y, r4.w, cb0[3].z, l(1.000000) +mad r3.x, r4.x, r4.y, r3.x +mul r4.x, r1.y, l(-0.707107) +mad r4.x, r1.x, l(0.707107), -r4.x +dp2 r4.y, r1.yxyy, l(0.707107, -0.707107, 0.000000, 0.000000) +mul r1.xy, r1.zzzz, r4.xyxx +round_ne r1.xy, r1.xyxx +mad r1.xy, r1.xyxx, r3.zwzz, v1.xyxx +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r1.xyxx, t0.yzxw, s0, l(0.000000) +mad r1.xy, cb0[2].xyxx, r1.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r1.xyxx +add r1.xyz, -r0.zxyz, r5.xyzx +dp3 r4.z, r1.xyzx, r1.xyzx +dp3 r1.x, r2.xyzx, r1.xyzx +rsq r1.y, r4.z +mad_sat r1.x, r1.x, r1.y, -cb0[3].w +mad_sat r1.y, r4.z, cb0[3].z, l(1.000000) +mad r1.x, r1.x, r1.y, r2.w +mul r1.yz, r1.wwww, r4.xxyx +round_ne r1.yz, r1.yyzy +mad r1.yz, r1.yyzy, r3.zzwz, v1.xxyx +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r1.yzyy, t0.yzxw, s0, l(0.000000) +mad r1.yz, cb0[2].xxyx, r1.yyzy, cb0[2].zzwz +mul r5.xy, r5.zzzz, r1.yzyy +add r1.yzw, -r0.zzxy, r5.xxyz +dp3 r2.w, r1.yzwy, r1.yzwy +dp3 r1.y, r2.xyzx, r1.yzwy +rsq r1.z, r2.w +mad_sat r1.y, r1.y, r1.z, -cb0[3].w +mad_sat r1.z, r2.w, cb0[3].z, l(1.000000) +mad r1.y, r1.y, r1.z, r3.x +mul r1.zw, r3.yyyy, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r1.zw, r1.zzzw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r1.zwzz, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r1.zzzw, cb0[2].zzzw +mul r5.xy, r5.zzzz, r1.zwzz +add r5.xyz, -r0.zxyz, r5.xyzx +dp3 r1.z, r5.xyzx, r5.xyzx +dp3 r1.w, r2.xyzx, r5.xyzx +rsq r2.w, r1.z +mad_sat r1.w, r1.w, r2.w, -cb0[3].w +mad_sat r1.z, r1.z, cb0[3].z, l(1.000000) +mad r1.y, r1.w, r1.z, r1.y +mul r1.zw, r0.wwww, r4.xxxy +round_ne r1.zw, r1.zzzw +mad r1.zw, r1.zzzw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r3.z, r1.zwzz, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r1.zzzw, cb0[2].zzzw +mul r3.xy, r3.zzzz, r1.zwzz +add r0.xyz, -r0.zxyz, r3.xyzx +dp3 r0.w, r0.xyzx, r0.xyzx +dp3 r0.x, r2.xyzx, r0.xyzx +rsq r0.y, r0.w +mad_sat r0.x, r0.x, r0.y, -cb0[3].w +mad_sat r0.y, r0.w, cb0[3].z, l(1.000000) +mad r0.x, r0.x, r0.y, r1.y +mul r0.x, r0.x, cb0[4].y +mad r0.x, r1.x, cb0[4].x, r0.x +mad_sat r0.x, -r0.x, l(0.062500), l(1.000000) +log r0.x, r0.x +mul r0.x, r0.x, cb0[4].z +exp o0.xyzw, r0.xxxx +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_DebugAO_PS_ENABLE_BLUR_0_D3D11[] = +{ + 68, 88, 66, 67, 204, 242, + 66, 70, 213, 103, 194, 24, + 242, 133, 93, 161, 26, 228, + 43, 155, 1, 0, 0, 0, + 28, 66, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 3, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 92, 65, 0, 0, + 80, 0, 0, 0, 87, 16, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 90, 0, + 0, 3, 0, 96, 16, 0, + 0, 0, 0, 0, 90, 0, + 0, 3, 0, 96, 16, 0, + 1, 0, 0, 0, 88, 24, + 0, 4, 0, 112, 16, 0, + 0, 0, 0, 0, 85, 85, + 0, 0, 88, 24, 0, 4, + 0, 112, 16, 0, 1, 0, + 0, 0, 85, 85, 0, 0, + 100, 32, 0, 4, 50, 16, + 16, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 98, 16, + 0, 3, 50, 16, 16, 0, + 1, 0, 0, 0, 101, 0, + 0, 3, 242, 32, 16, 0, + 0, 0, 0, 0, 104, 0, + 0, 2, 7, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 34, 0, 16, 0, 0, 0, + 0, 0, 70, 16, 16, 0, + 1, 0, 0, 0, 22, 126, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 10, 50, 0, 16, 0, + 1, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 128, 62, 0, 0, 128, 62, + 0, 0, 0, 0, 0, 0, + 0, 0, 69, 0, 0, 139, + 194, 0, 0, 128, 67, 85, + 21, 0, 114, 0, 16, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 70, 126, 16, 0, 1, 0, + 0, 0, 0, 96, 16, 0, + 1, 0, 0, 0, 14, 0, + 0, 8, 130, 0, 16, 0, + 0, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 49, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 31, 0, + 4, 3, 58, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 8, 242, 32, 16, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 128, 63, + 0, 0, 128, 63, 0, 0, + 128, 63, 0, 0, 128, 63, + 62, 0, 0, 1, 21, 0, + 0, 1, 50, 0, 0, 11, + 50, 0, 16, 0, 2, 0, + 0, 0, 22, 133, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 22, 21, 16, 0, + 1, 0, 0, 0, 182, 143, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 82, 0, 16, 0, + 0, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 6, 1, 16, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 54, 0, 0, 6, 34, 0, + 16, 0, 2, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 2, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 7, + 50, 0, 16, 0, 2, 0, + 0, 0, 150, 5, 16, 0, + 2, 0, 0, 0, 70, 16, + 16, 0, 1, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 18, 0, 16, 0, 3, 0, + 0, 0, 70, 0, 16, 0, + 2, 0, 0, 0, 70, 126, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 2, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 2, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 3, 0, 0, 0, + 6, 0, 16, 0, 3, 0, + 0, 0, 6, 1, 16, 0, + 2, 0, 0, 0, 54, 0, + 0, 7, 34, 0, 16, 0, + 2, 0, 0, 0, 42, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 2, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 7, 50, 0, 16, 0, + 2, 0, 0, 0, 150, 5, + 16, 0, 2, 0, 0, 0, + 70, 16, 16, 0, 1, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 2, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 2, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 2, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 0, 16, 0, + 4, 0, 0, 0, 6, 1, + 16, 0, 2, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 2, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 54, 0, 0, 6, + 18, 0, 16, 0, 2, 0, + 0, 0, 58, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 7, + 50, 0, 16, 0, 2, 0, + 0, 0, 134, 0, 16, 0, + 2, 0, 0, 0, 22, 21, + 16, 0, 1, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 34, 0, 16, 0, 5, 0, + 0, 0, 22, 5, 16, 0, + 2, 0, 0, 0, 22, 126, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 2, 0, 0, 0, 22, 133, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 2, 0, 0, 0, + 182, 143, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 82, 0, + 16, 0, 5, 0, 0, 0, + 86, 5, 16, 0, 5, 0, + 0, 0, 6, 1, 16, 0, + 2, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 2, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 54, 0, 0, 7, 18, 0, + 16, 0, 2, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 7, 50, 0, 16, 0, + 2, 0, 0, 0, 134, 0, + 16, 0, 2, 0, 0, 0, + 22, 21, 16, 0, 1, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 34, 0, 16, 0, + 6, 0, 0, 0, 22, 5, + 16, 0, 2, 0, 0, 0, + 22, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 2, 0, 0, 0, + 22, 133, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 2, 0, + 0, 0, 182, 143, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 82, 0, 16, 0, 6, 0, + 0, 0, 86, 5, 16, 0, + 6, 0, 0, 0, 6, 1, + 16, 0, 2, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 2, 0, 0, 0, + 150, 4, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 3, 0, + 0, 0, 150, 4, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 49, 0, 0, 7, 130, 0, + 16, 0, 2, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 55, 0, + 0, 9, 114, 0, 16, 0, + 2, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 49, 0, + 0, 7, 130, 0, 16, 0, + 2, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 55, 0, 0, 9, + 114, 0, 16, 0, 3, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 114, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 114, 0, + 16, 0, 2, 0, 0, 0, + 38, 9, 16, 0, 2, 0, + 0, 0, 150, 4, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 2, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 114, 0, 16, 0, + 2, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 50, 0, 0, 9, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 50, 0, 16, 0, 3, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 166, 10, + 16, 0, 1, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 11, + 194, 0, 16, 0, 3, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 128, 64, + 0, 0, 128, 64, 50, 0, + 0, 9, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 230, 10, 16, 0, 3, 0, + 0, 0, 70, 16, 16, 0, + 1, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 3, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 3, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 42, 0, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 38, 9, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 130, 0, 16, 0, + 2, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 246, 15, + 16, 0, 1, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 10, + 16, 0, 3, 0, 0, 0, + 70, 16, 16, 0, 1, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 34, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 58, 0, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 38, 9, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 4, 16, 0, 1, 0, + 0, 0, 86, 5, 16, 0, + 3, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 3, 0, 0, 0, 6, 20, + 16, 0, 1, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 26, 0, 16, 0, + 3, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 38, 9, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 18, 0, 16, 0, 5, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 5, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 1, 16, 0, + 1, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 166, 11, + 16, 0, 3, 0, 0, 0, + 6, 17, 16, 0, 1, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 166, 4, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 6, 9, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 5, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 5, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 5, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 10, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 1, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 0, 243, 4, + 53, 63, 243, 4, 53, 63, + 0, 0, 0, 0, 50, 0, + 0, 10, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 243, 4, + 53, 63, 42, 0, 16, 128, + 65, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 7, + 34, 0, 16, 0, 5, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 5, 0, 0, 0, 166, 14, + 16, 0, 5, 0, 0, 0, + 50, 0, 0, 9, 194, 0, + 16, 0, 5, 0, 0, 0, + 166, 14, 16, 0, 5, 0, + 0, 0, 166, 14, 16, 0, + 3, 0, 0, 0, 6, 20, + 16, 0, 1, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 5, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 166, 14, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 5, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 38, 9, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 5, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 5, 0, 0, 0, 42, 0, + 16, 0, 5, 0, 0, 0, + 58, 0, 16, 0, 5, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 5, 0, + 0, 0, 50, 0, 0, 9, + 130, 0, 16, 0, 2, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 5, 0, + 0, 0, 246, 15, 16, 0, + 1, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 5, 0, 0, 0, + 166, 14, 16, 0, 5, 0, + 0, 0, 50, 0, 0, 9, + 194, 0, 16, 0, 5, 0, + 0, 0, 166, 14, 16, 0, + 5, 0, 0, 0, 166, 14, + 16, 0, 3, 0, 0, 0, + 6, 20, 16, 0, 1, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 5, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 166, 14, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 5, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 38, 9, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 18, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 56, 0, 0, 7, 146, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 3, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 146, 0, 16, 0, + 4, 0, 0, 0, 6, 12, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 146, 0, + 16, 0, 4, 0, 0, 0, + 6, 12, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 3, 0, 0, 0, 6, 20, + 16, 0, 1, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 198, 0, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 146, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 12, + 16, 0, 4, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 198, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 38, 9, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 5, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 146, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 146, 0, 16, 0, 4, 0, + 0, 0, 6, 12, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 146, 0, 16, 0, + 4, 0, 0, 0, 6, 12, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 3, 0, + 0, 0, 6, 20, 16, 0, + 1, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 198, 0, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 146, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 12, 16, 0, + 4, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 198, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 38, 9, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 5, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 46, 189, 59, 179, + 26, 0, 16, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 50, 0, 0, 9, 34, 0, + 16, 0, 5, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 59, 179, 10, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 146, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 146, 0, 16, 0, + 4, 0, 0, 0, 6, 12, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 146, 0, + 16, 0, 4, 0, 0, 0, + 6, 12, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 3, 0, 0, 0, 6, 20, + 16, 0, 1, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 198, 0, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 146, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 12, + 16, 0, 4, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 198, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 38, 9, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 5, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 146, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 1, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 146, 0, 16, 0, 4, 0, + 0, 0, 6, 12, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 146, 0, 16, 0, + 4, 0, 0, 0, 6, 12, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 3, 0, + 0, 0, 6, 20, 16, 0, + 1, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 198, 0, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 146, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 12, 16, 0, + 4, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 198, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 38, 9, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 5, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 5, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 146, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 3, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 146, 0, + 16, 0, 4, 0, 0, 0, + 6, 12, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 146, 0, 16, 0, 4, 0, + 0, 0, 6, 12, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 3, 0, 0, 0, + 6, 20, 16, 0, 1, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 198, 0, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 146, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 12, 16, 0, 4, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 198, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 38, 9, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 5, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 146, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 146, 0, 16, 0, + 4, 0, 0, 0, 6, 12, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 146, 0, + 16, 0, 4, 0, 0, 0, + 6, 12, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 3, 0, 0, 0, 6, 20, + 16, 0, 1, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 198, 0, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 146, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 12, + 16, 0, 4, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 198, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 38, 9, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 18, 0, 16, 0, 5, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 5, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 243, 4, + 53, 191, 42, 0, 16, 128, + 65, 0, 0, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 34, 0, 16, 0, 5, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 243, 4, 53, 191, + 26, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 10, + 16, 0, 3, 0, 0, 0, + 70, 16, 16, 0, 1, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 38, 9, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 130, 0, + 16, 0, 2, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 10, 16, 0, + 3, 0, 0, 0, 70, 16, + 16, 0, 1, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 38, 9, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 86, 5, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 10, 16, 0, 3, 0, + 0, 0, 70, 16, 16, 0, + 1, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 38, 9, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 10, + 16, 0, 3, 0, 0, 0, + 70, 16, 16, 0, 1, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 38, 9, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 11, 18, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 187, 179, 10, 0, 16, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 34, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 46, 189, 187, 179, + 26, 0, 16, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 3, 0, 0, 0, 6, 20, + 16, 0, 1, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 38, 9, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 18, 0, 16, 0, 5, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 5, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 1, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 3, 0, + 0, 0, 6, 20, 16, 0, + 1, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 38, 9, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 18, 0, + 16, 0, 5, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 5, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 3, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 3, 0, 0, 0, + 6, 20, 16, 0, 1, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 38, 9, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 18, 0, 16, 0, + 5, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 5, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 10, 16, 0, + 3, 0, 0, 0, 70, 16, + 16, 0, 1, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 38, 9, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 245, 4, + 53, 191, 50, 0, 0, 10, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 241, 4, 53, 191, + 10, 0, 16, 128, 65, 0, + 0, 0, 4, 0, 0, 0, + 15, 0, 0, 10, 34, 0, + 16, 0, 4, 0, 0, 0, + 22, 5, 16, 0, 1, 0, + 0, 0, 2, 64, 0, 0, + 241, 4, 53, 191, 245, 4, + 53, 191, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 1, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 3, 0, + 0, 0, 6, 20, 16, 0, + 1, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 38, 9, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 18, 0, + 16, 0, 5, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 5, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 2, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 1, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 3, 0, 0, 0, + 6, 20, 16, 0, 1, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 38, 9, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 18, 0, 16, 0, + 5, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 5, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 86, 5, 16, 0, 3, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 3, 0, 0, 0, 6, 20, + 16, 0, 1, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 38, 9, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 18, 0, 16, 0, 5, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 5, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 10, 16, 0, 3, 0, + 0, 0, 70, 16, 16, 0, + 1, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 38, 9, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 34, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 9, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 46, 222, 76, 50, + 26, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 46, 222, 76, 50, + 10, 0, 16, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 3, 0, 0, 0, 6, 20, + 16, 0, 1, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 38, 9, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 18, 0, 16, 0, 5, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 130, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 5, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 2, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 1, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 3, 0, + 0, 0, 6, 20, 16, 0, + 1, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 38, 9, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 18, 0, + 16, 0, 5, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 5, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 4, 0, + 0, 0, 86, 5, 16, 0, + 3, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 3, 0, 0, 0, + 6, 20, 16, 0, 1, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 4, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 166, 14, 16, 0, 4, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 38, 9, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 18, 0, 16, 0, + 5, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 5, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 230, 10, 16, 0, + 3, 0, 0, 0, 70, 16, + 16, 0, 1, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 38, 9, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 34, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 239, 4, + 53, 191, 50, 0, 0, 10, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 247, 4, 53, 63, + 10, 0, 16, 128, 65, 0, + 0, 0, 4, 0, 0, 0, + 15, 0, 0, 10, 34, 0, + 16, 0, 4, 0, 0, 0, + 22, 5, 16, 0, 1, 0, + 0, 0, 2, 64, 0, 0, + 247, 4, 53, 63, 239, 4, + 53, 191, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 1, 0, 0, 0, 166, 10, + 16, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 9, 50, 0, 16, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 3, 0, + 0, 0, 70, 16, 16, 0, + 1, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 1, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 1, 0, + 0, 0, 38, 9, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 34, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 1, 0, + 0, 0, 246, 15, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 1, 0, 0, 0, + 86, 6, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 9, + 98, 0, 16, 0, 1, 0, + 0, 0, 86, 6, 16, 0, + 1, 0, 0, 0, 166, 11, + 16, 0, 3, 0, 0, 0, + 6, 17, 16, 0, 1, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 1, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 1, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 86, 6, 16, 0, 1, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 1, 0, 0, 0, + 166, 4, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 6, 9, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 2, 0, + 0, 0, 150, 7, 16, 0, + 1, 0, 0, 0, 150, 7, + 16, 0, 1, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 150, 7, 16, 0, + 1, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 34, 0, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 1, 0, 0, 0, + 86, 5, 16, 0, 3, 0, + 0, 0, 6, 4, 16, 0, + 4, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 1, 0, 0, 0, 166, 14, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 9, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 166, 14, 16, 0, + 3, 0, 0, 0, 6, 20, + 16, 0, 1, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 1, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 166, 14, + 16, 0, 1, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 38, 9, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 2, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 50, 32, + 0, 11, 130, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 34, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 1, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 1, 0, + 0, 0, 166, 14, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 9, 194, 0, 16, 0, + 1, 0, 0, 0, 166, 14, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 3, 0, + 0, 0, 6, 20, 16, 0, + 1, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 3, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 1, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 166, 14, 16, 0, + 1, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 3, 0, 0, 0, 166, 10, + 16, 0, 3, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 0, 0, + 0, 0, 38, 9, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 0, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 0, 0, 0, 0, + 68, 0, 0, 5, 34, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 34, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 8, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 26, 128, + 32, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 10, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 50, 32, 0, 10, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 61, 1, 64, + 0, 0, 0, 0, 128, 63, + 47, 0, 0, 5, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 8, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 25, 0, + 0, 5, 242, 32, 16, 0, + 0, 0, 0, 0, 6, 0, + 16, 0, 0, 0, 0, 0, + 62, 0, 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 xy 0 TARGET float xy +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[5], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_resource_texture2d (float,float,float,float) t0 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xy +dcl_temps 7 +sample_l_indexable(texture2d)(float,float,float,float) r0.w, v1.xyxx, t0.yzwx, s0, l(0.000000) +mul r1.xy, v0.xyxx, l(0.250000, 0.250000, 0.000000, 0.000000) +sample_indexable(texture2d)(float,float,float,float) r1.xyz, r1.xyxx, t1.xyzw, s1 +div r1.w, cb0[3].x, r0.w +lt r2.x, r1.w, l(1.000000) +if_nz r2.x + mov o0.x, l(1.000000) + mov o0.y, r0.w + ret +endif +mad r2.xy, cb0[2].xyxx, v1.xyxx, cb0[2].zwzz +mul r0.yz, r0.wwww, r2.xxyx +mul r2.x, r1.w, l(0.050000) +mov r2.y, cb0[1].z +mov r2.z, l(0) +add r2.yz, r2.yyzy, v1.xxyx +sample_l_indexable(texture2d)(float,float,float,float) r3.x, r2.yzyy, t0.xyzw, s0, l(0.000000) +mad r2.yz, cb0[2].xxyx, r2.yyzy, cb0[2].zzwz +mul r3.yz, r3.xxxx, r2.yyzy +mov r2.y, -cb0[1].z +mov r2.z, l(0) +add r2.yz, r2.yyzy, v1.xxyx +sample_l_indexable(texture2d)(float,float,float,float) r4.x, r2.yzyy, t0.xyzw, s0, l(0.000000) +mad r2.yz, cb0[2].xxyx, r2.yyzy, cb0[2].zzwz +mul r4.yz, r4.xxxx, r2.yyzy +mov r5.z, l(0) +mov r5.x, cb0[1].w +add r2.yz, r5.xxzx, v1.yyxy +sample_l_indexable(texture2d)(float,float,float,float) r5.y, r2.zyzz, t0.yxzw, s0, l(0.000000) +mad r2.yz, cb0[2].yyxy, r2.yyzy, cb0[2].wwzw +mul r5.xz, r5.yyyy, r2.yyzy +mov r6.z, l(0) +mov r6.x, -cb0[1].w +add r2.yz, r6.xxzx, v1.yyxy +sample_l_indexable(texture2d)(float,float,float,float) r6.y, r2.zyzz, t0.yxzw, s0, l(0.000000) +mad r2.yz, cb0[2].yyxy, r2.yyzy, cb0[2].wwzw +mul r6.xz, r6.yyyy, r2.yyzy +add r2.yzw, -r0.wwyz, r3.xxyz +add r3.xyz, r0.wyzw, -r4.xyzx +dp3 r3.w, r2.yzwy, r2.yzwy +dp3 r4.x, r3.xyzx, r3.xyzx +lt r3.w, r3.w, r4.x +movc r2.yzw, r3.wwww, r2.yyzw, r3.xxyz +add r3.xyz, -r0.zwyz, r5.xyzx +add r4.xyz, r0.zwyz, -r6.xyzx +dp3 r3.w, r3.xyzx, r3.xyzx +dp3 r4.w, r4.xyzx, r4.xyzx +lt r3.w, r3.w, r4.w +movc r3.xyz, r3.wwww, r3.xyzx, r4.xyzx +mul r4.xyz, r2.yzwy, r3.xyzx +mad r2.yzw, r2.wwyz, r3.yyzx, -r4.xxyz +dp3 r3.x, r2.yzwy, r2.yzwy +rsq r3.x, r3.x +mul r2.yzw, r2.yyzw, r3.xxxx +mad r1.z, r1.z, r2.x, l(1.000000) +mul r3.xy, r1.xyxx, r1.zzzz +round_ne r3.xy, r3.xyxx +mul r3.zw, cb0[1].zzzw, l(0.000000, 0.000000, 4.000000, 4.000000) +mad r3.xy, r3.xyxx, r3.zwzz, v1.xyxx +sample_l_indexable(texture2d)(float,float,float,float) r4.z, r3.xyxx, t0.yzxw, s0, l(0.000000) +mad r3.xy, cb0[2].xyxx, r3.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r3.xyxx +mad r2.x, r1.w, l(0.050000), r1.z +add r4.xyz, -r0.yzwy, r4.xyzx +dp3 r3.x, r4.xyzx, r4.xyzx +dp3 r3.y, r2.yzwy, r4.xyzx +rsq r4.x, r3.x +mad_sat r3.y, r3.y, r4.x, -cb0[3].w +mad_sat r3.x, r3.x, cb0[3].z, l(1.000000) +mul r4.xy, r1.xyxx, r2.xxxx +round_ne r4.xy, r4.xyxx +mad r4.xy, r4.xyxx, r3.zwzz, v1.xyxx +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r4.xyxx, t0.yzxw, s0, l(0.000000) +mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz +mul r5.xy, r5.zzzz, r4.xyxx +mad r4.x, r1.w, l(0.050000), r2.x +add r4.yzw, -r0.yyzw, r5.xxyz +dp3 r5.x, r4.yzwy, r4.yzwy +dp3 r4.y, r2.yzwy, r4.yzwy +rsq r4.z, r5.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.x, cb0[3].z, l(1.000000) +mul r5.xy, r1.xyxx, r4.xxxx +round_ne r5.xy, r5.xyxx +mad r5.xy, r5.xyxx, r3.zwzz, v1.xyxx +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r5.xyxx, t0.yzxw, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r5.xyxx +mad r1.w, r1.w, l(0.050000), r4.x +add r5.xyz, -r0.yzwy, r6.xyzx +dp3 r4.w, r5.xyzx, r5.xyzx +dp3 r5.x, r2.yzwy, r5.xyzx +rsq r5.y, r4.w +mad_sat r5.x, r5.x, r5.y, -cb0[3].w +mad_sat r4.w, r4.w, cb0[3].z, l(1.000000) +mul r4.w, r4.w, r5.x +mad r4.y, r4.y, r4.z, r4.w +mul r4.zw, r1.xxxy, r1.wwww +round_ne r4.zw, r4.zzzw +mad r4.zw, r4.zzzw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r4.zwzz, t0.yzxw, s0, l(0.000000) +mad r4.zw, cb0[2].xxxy, r4.zzzw, cb0[2].zzzw +mul r5.xy, r5.zzzz, r4.zwzz +add r5.xyz, -r0.yzwy, r5.xyzx +dp3 r4.z, r5.xyzx, r5.xyzx +dp3 r4.w, r2.yzwy, r5.xyzx +rsq r5.x, r4.z +mad_sat r4.w, r4.w, r5.x, -cb0[3].w +mad_sat r4.z, r4.z, cb0[3].z, l(1.000000) +mad r4.y, r4.w, r4.z, r4.y +mul r4.zw, r1.xxxy, l(0.000000, 0.000000, 0.707107, 0.707107) +mad r5.x, r1.x, l(0.707107), -r4.w +add r5.y, r4.z, r4.w +mul r5.zw, r1.zzzz, r5.xxxy +round_ne r5.zw, r5.zzzw +mad r5.zw, r5.zzzw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r5.zwzz, t0.yzxw, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r5.zzzw, cb0[2].zzzw +mul r6.xy, r6.zzzz, r5.zwzz +add r6.xyz, -r0.yzwy, r6.xyzx +dp3 r5.z, r6.xyzx, r6.xyzx +dp3 r5.w, r2.yzwy, r6.xyzx +rsq r6.x, r5.z +mad_sat r5.w, r5.w, r6.x, -cb0[3].w +mad_sat r5.z, r5.z, cb0[3].z, l(1.000000) +mul r5.z, r5.z, r5.w +mad r3.x, r3.y, r3.x, r5.z +mul r5.zw, r2.xxxx, r5.xxxy +round_ne r5.zw, r5.zzzw +mad r5.zw, r5.zzzw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r5.zwzz, t0.yzxw, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r5.zzzw, cb0[2].zzzw +mul r6.xy, r6.zzzz, r5.zwzz +add r6.xyz, -r0.yzwy, r6.xyzx +dp3 r3.y, r6.xyzx, r6.xyzx +dp3 r5.z, r2.yzwy, r6.xyzx +rsq r5.w, r3.y +mad_sat r5.z, r5.z, r5.w, -cb0[3].w +mad_sat r3.y, r3.y, cb0[3].z, l(1.000000) +mad r3.y, r5.z, r3.y, r4.y +mul r5.zw, r4.xxxx, r5.xxxy +round_ne r5.zw, r5.zzzw +mad r5.zw, r5.zzzw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r5.zwzz, t0.yzxw, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r5.zzzw, cb0[2].zzzw +mul r6.xy, r6.zzzz, r5.zwzz +add r6.xyz, -r0.yzwy, r6.xyzx +dp3 r4.y, r6.xyzx, r6.xyzx +dp3 r5.z, r2.yzwy, r6.xyzx +rsq r5.w, r4.y +mad_sat r5.z, r5.z, r5.w, -cb0[3].w +mad_sat r4.y, r4.y, cb0[3].z, l(1.000000) +mad r3.y, r5.z, r4.y, r3.y +mul r5.xy, r1.wwww, r5.xyxx +round_ne r5.xy, r5.xyxx +mad r5.xy, r5.xyxx, r3.zwzz, v1.xyxx +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r5.xyxx, t0.yzxw, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r5.xyxx +add r5.xyz, -r0.yzwy, r6.xyzx +dp3 r4.y, r5.xyzx, r5.xyzx +dp3 r5.x, r2.yzwy, r5.xyzx +rsq r5.y, r4.y +mad_sat r5.x, r5.x, r5.y, -cb0[3].w +mad_sat r4.y, r4.y, cb0[3].z, l(1.000000) +mad r3.y, r5.x, r4.y, r3.y +mad r5.x, r1.x, l(-0.000000), -r1.y +mad r5.y, r1.y, l(-0.000000), r1.x +mul r5.zw, r1.zzzz, r5.xxxy +round_ne r5.zw, r5.zzzw +mad r5.zw, r5.zzzw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r5.zwzz, t0.yzxw, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r5.zzzw, cb0[2].zzzw +mul r6.xy, r6.zzzz, r5.zwzz +add r6.xyz, -r0.yzwy, r6.xyzx +dp3 r4.y, r6.xyzx, r6.xyzx +dp3 r5.z, r2.yzwy, r6.xyzx +rsq r5.w, r4.y +mad_sat r5.z, r5.z, r5.w, -cb0[3].w +mad_sat r4.y, r4.y, cb0[3].z, l(1.000000) +mad r3.x, r5.z, r4.y, r3.x +mul r5.zw, r2.xxxx, r5.xxxy +round_ne r5.zw, r5.zzzw +mad r5.zw, r5.zzzw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r5.zwzz, t0.yzxw, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r5.zzzw, cb0[2].zzzw +mul r6.xy, r6.zzzz, r5.zwzz +add r6.xyz, -r0.yzwy, r6.xyzx +dp3 r4.y, r6.xyzx, r6.xyzx +dp3 r5.z, r2.yzwy, r6.xyzx +rsq r5.w, r4.y +mad_sat r5.z, r5.z, r5.w, -cb0[3].w +mad_sat r4.y, r4.y, cb0[3].z, l(1.000000) +mad r3.y, r5.z, r4.y, r3.y +mul r5.zw, r4.xxxx, r5.xxxy +round_ne r5.zw, r5.zzzw +mad r5.zw, r5.zzzw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r5.zwzz, t0.yzxw, s0, l(0.000000) +mad r5.zw, cb0[2].xxxy, r5.zzzw, cb0[2].zzzw +mul r6.xy, r6.zzzz, r5.zwzz +add r6.xyz, -r0.yzwy, r6.xyzx +dp3 r4.y, r6.xyzx, r6.xyzx +dp3 r5.z, r2.yzwy, r6.xyzx +rsq r5.w, r4.y +mad_sat r5.z, r5.z, r5.w, -cb0[3].w +mad_sat r4.y, r4.y, cb0[3].z, l(1.000000) +mad r3.y, r5.z, r4.y, r3.y +mul r5.xy, r1.wwww, r5.xyxx +round_ne r5.xy, r5.xyxx +mad r5.xy, r5.xyxx, r3.zwzz, v1.xyxx +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r5.xyxx, t0.yzxw, s0, l(0.000000) +mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz +mul r6.xy, r6.zzzz, r5.xyxx +add r5.xyz, -r0.yzwy, r6.xyzx +dp3 r4.y, r5.xyzx, r5.xyzx +dp3 r5.x, r2.yzwy, r5.xyzx +rsq r5.y, r4.y +mad_sat r5.x, r5.x, r5.y, -cb0[3].w +mad_sat r4.y, r4.y, cb0[3].z, l(1.000000) +mad r3.y, r5.x, r4.y, r3.y +mad r5.x, r1.x, l(-0.707107), -r4.w +mad r5.y, r1.y, l(-0.707107), r4.z +mul r4.yz, r1.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r4.yz, r4.yyzy, r3.zzwz, v1.xxyx +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r4.yzyy, t0.yzxw, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r4.yyzy, cb0[2].zzwz +mul r6.xy, r6.zzzz, r4.yzyy +add r4.yzw, -r0.yyzw, r6.xxyz +dp3 r5.z, r4.yzwy, r4.yzwy +dp3 r4.y, r2.yzwy, r4.yzwy +rsq r4.z, r5.z +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.z, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r4.z, r3.x +mul r4.yz, r2.xxxx, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r4.yz, r4.yyzy, r3.zzwz, v1.xxyx +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r4.yzyy, t0.yzxw, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r4.yyzy, cb0[2].zzwz +mul r6.xy, r6.zzzz, r4.yzyy +add r4.yzw, -r0.yyzw, r6.xxyz +dp3 r5.z, r4.yzwy, r4.yzwy +dp3 r4.y, r2.yzwy, r4.yzwy +rsq r4.z, r5.z +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.z, cb0[3].z, l(1.000000) +mad r3.y, r4.y, r4.z, r3.y +mul r4.yz, r4.xxxx, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r4.yz, r4.yyzy, r3.zzwz, v1.xxyx +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r4.yzyy, t0.yzxw, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r4.yyzy, cb0[2].zzwz +mul r6.xy, r6.zzzz, r4.yzyy +add r4.yzw, -r0.yyzw, r6.xxyz +dp3 r5.z, r4.yzwy, r4.yzwy +dp3 r4.y, r2.yzwy, r4.yzwy +rsq r4.z, r5.z +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.z, cb0[3].z, l(1.000000) +mad r3.y, r4.y, r4.z, r3.y +mul r4.yz, r1.wwww, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r4.yz, r4.yyzy, r3.zzwz, v1.xxyx +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r4.yzyy, t0.yzxw, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r4.yyzy, cb0[2].zzwz +mul r5.xy, r5.zzzz, r4.yzyy +add r4.yzw, -r0.yyzw, r5.xxyz +dp3 r5.x, r4.yzwy, r4.yzwy +dp3 r4.y, r2.yzwy, r4.yzwy +rsq r4.z, r5.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.x, cb0[3].z, l(1.000000) +mad r3.y, r4.y, r4.z, r3.y +mad r5.x, -r1.y, l(-0.000000), -r1.x +mad r5.y, r1.x, l(-0.000000), -r1.y +mul r4.yz, r1.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r4.yz, r4.yyzy, r3.zzwz, v1.xxyx +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r4.yzyy, t0.yzxw, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r4.yyzy, cb0[2].zzwz +mul r6.xy, r6.zzzz, r4.yzyy +add r4.yzw, -r0.yyzw, r6.xxyz +dp3 r5.z, r4.yzwy, r4.yzwy +dp3 r4.y, r2.yzwy, r4.yzwy +rsq r4.z, r5.z +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.z, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r4.z, r3.x +mul r4.yz, r2.xxxx, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r4.yz, r4.yyzy, r3.zzwz, v1.xxyx +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r4.yzyy, t0.yzxw, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r4.yyzy, cb0[2].zzwz +mul r6.xy, r6.zzzz, r4.yzyy +add r4.yzw, -r0.yyzw, r6.xxyz +dp3 r5.z, r4.yzwy, r4.yzwy +dp3 r4.y, r2.yzwy, r4.yzwy +rsq r4.z, r5.z +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.z, cb0[3].z, l(1.000000) +mad r3.y, r4.y, r4.z, r3.y +mul r4.yz, r4.xxxx, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r4.yz, r4.yyzy, r3.zzwz, v1.xxyx +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r4.yzyy, t0.yzxw, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r4.yyzy, cb0[2].zzwz +mul r6.xy, r6.zzzz, r4.yzyy +add r4.yzw, -r0.yyzw, r6.xxyz +dp3 r5.z, r4.yzwy, r4.yzwy +dp3 r4.y, r2.yzwy, r4.yzwy +rsq r4.z, r5.z +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.z, cb0[3].z, l(1.000000) +mad r3.y, r4.y, r4.z, r3.y +mul r4.yz, r1.wwww, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r4.yz, r4.yyzy, r3.zzwz, v1.xxyx +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r4.yzyy, t0.yzxw, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r4.yyzy, cb0[2].zzwz +mul r5.xy, r5.zzzz, r4.yzyy +add r4.yzw, -r0.yyzw, r5.xxyz +dp3 r5.x, r4.yzwy, r4.yzwy +dp3 r4.y, r2.yzwy, r4.yzwy +rsq r4.z, r5.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.x, cb0[3].z, l(1.000000) +mad r3.y, r4.y, r4.z, r3.y +mul r4.y, r1.y, l(-0.707107) +mad r5.x, r1.x, l(-0.707107), -r4.y +dp2 r5.y, r1.yxyy, l(-0.707107, -0.707107, 0.000000, 0.000000) +mul r4.yz, r1.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r4.yz, r4.yyzy, r3.zzwz, v1.xxyx +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r4.yzyy, t0.yzxw, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r4.yyzy, cb0[2].zzwz +mul r6.xy, r6.zzzz, r4.yzyy +add r4.yzw, -r0.yyzw, r6.xxyz +dp3 r5.z, r4.yzwy, r4.yzwy +dp3 r4.y, r2.yzwy, r4.yzwy +rsq r4.z, r5.z +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.z, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r4.z, r3.x +mul r4.yz, r2.xxxx, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r4.yz, r4.yyzy, r3.zzwz, v1.xxyx +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r4.yzyy, t0.yzxw, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r4.yyzy, cb0[2].zzwz +mul r6.xy, r6.zzzz, r4.yzyy +add r4.yzw, -r0.yyzw, r6.xxyz +dp3 r5.z, r4.yzwy, r4.yzwy +dp3 r4.y, r2.yzwy, r4.yzwy +rsq r4.z, r5.z +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.z, cb0[3].z, l(1.000000) +mad r3.y, r4.y, r4.z, r3.y +mul r4.yz, r4.xxxx, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r4.yz, r4.yyzy, r3.zzwz, v1.xxyx +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r4.yzyy, t0.yzxw, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r4.yyzy, cb0[2].zzwz +mul r6.xy, r6.zzzz, r4.yzyy +add r4.yzw, -r0.yyzw, r6.xxyz +dp3 r5.z, r4.yzwy, r4.yzwy +dp3 r4.y, r2.yzwy, r4.yzwy +rsq r4.z, r5.z +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.z, cb0[3].z, l(1.000000) +mad r3.y, r4.y, r4.z, r3.y +mul r4.yz, r1.wwww, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r4.yz, r4.yyzy, r3.zzwz, v1.xxyx +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r4.yzyy, t0.yzxw, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r4.yyzy, cb0[2].zzwz +mul r5.xy, r5.zzzz, r4.yzyy +add r4.yzw, -r0.yyzw, r5.xxyz +dp3 r5.x, r4.yzwy, r4.yzwy +dp3 r4.y, r2.yzwy, r4.yzwy +rsq r4.z, r5.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.x, cb0[3].z, l(1.000000) +mad r3.y, r4.y, r4.z, r3.y +mad r5.x, r1.x, l(0.000000), r1.y +mad r5.y, r1.y, l(0.000000), -r1.x +mul r4.yz, r1.zzzz, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r4.yz, r4.yyzy, r3.zzwz, v1.xxyx +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r4.yzyy, t0.yzxw, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r4.yyzy, cb0[2].zzwz +mul r6.xy, r6.zzzz, r4.yzyy +add r4.yzw, -r0.yyzw, r6.xxyz +dp3 r5.z, r4.yzwy, r4.yzwy +dp3 r4.y, r2.yzwy, r4.yzwy +rsq r4.z, r5.z +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.z, cb0[3].z, l(1.000000) +mad r3.x, r4.y, r4.z, r3.x +mul r4.yz, r2.xxxx, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r4.yz, r4.yyzy, r3.zzwz, v1.xxyx +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r4.yzyy, t0.yzxw, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r4.yyzy, cb0[2].zzwz +mul r6.xy, r6.zzzz, r4.yzyy +add r4.yzw, -r0.yyzw, r6.xxyz +dp3 r5.z, r4.yzwy, r4.yzwy +dp3 r4.y, r2.yzwy, r4.yzwy +rsq r4.z, r5.z +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.z, cb0[3].z, l(1.000000) +mad r3.y, r4.y, r4.z, r3.y +mul r4.yz, r4.xxxx, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r4.yz, r4.yyzy, r3.zzwz, v1.xxyx +sample_l_indexable(texture2d)(float,float,float,float) r6.z, r4.yzyy, t0.yzxw, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r4.yyzy, cb0[2].zzwz +mul r6.xy, r6.zzzz, r4.yzyy +add r4.yzw, -r0.yyzw, r6.xxyz +dp3 r5.z, r4.yzwy, r4.yzwy +dp3 r4.y, r2.yzwy, r4.yzwy +rsq r4.z, r5.z +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.z, cb0[3].z, l(1.000000) +mad r3.y, r4.y, r4.z, r3.y +mul r4.yz, r1.wwww, r5.xxyx +round_ne r4.yz, r4.yyzy +mad r4.yz, r4.yyzy, r3.zzwz, v1.xxyx +sample_l_indexable(texture2d)(float,float,float,float) r5.z, r4.yzyy, t0.yzxw, s0, l(0.000000) +mad r4.yz, cb0[2].xxyx, r4.yyzy, cb0[2].zzwz +mul r5.xy, r5.zzzz, r4.yzyy +add r4.yzw, -r0.yyzw, r5.xxyz +dp3 r5.x, r4.yzwy, r4.yzwy +dp3 r4.y, r2.yzwy, r4.yzwy +rsq r4.z, r5.x +mad_sat r4.y, r4.y, r4.z, -cb0[3].w +mad_sat r4.z, r5.x, cb0[3].z, l(1.000000) +mad r3.y, r4.y, r4.z, r3.y +mul r4.y, r1.y, l(-0.707107) +mad r5.x, r1.x, l(0.707107), -r4.y +dp2 r5.y, r1.yxyy, l(0.707107, -0.707107, 0.000000, 0.000000) +mul r1.xy, r1.zzzz, r5.xyxx +round_ne r1.xy, r1.xyxx +mad r1.xy, r1.xyxx, r3.zwzz, v1.xyxx +sample_l_indexable(texture2d)(float,float,float,float) r4.w, r1.xyxx, t0.wyzx, s0, l(0.000000) +mad r1.xy, cb0[2].xyxx, r1.xyxx, cb0[2].zwzz +mul r4.yz, r4.wwww, r1.xxyx +add r1.xyz, -r0.yzwy, r4.yzwy +dp3 r4.y, r1.xyzx, r1.xyzx +dp3 r1.x, r2.yzwy, r1.xyzx +rsq r1.y, r4.y +mad_sat r1.x, r1.x, r1.y, -cb0[3].w +mad_sat r1.y, r4.y, cb0[3].z, l(1.000000) +mad r1.x, r1.x, r1.y, r3.x +mul r1.yz, r2.xxxx, r5.xxyx +round_ne r1.yz, r1.yyzy +mad r1.yz, r1.yyzy, r3.zzwz, v1.xxyx +sample_l_indexable(texture2d)(float,float,float,float) r4.w, r1.yzyy, t0.wyzx, s0, l(0.000000) +mad r1.yz, cb0[2].xxyx, r1.yyzy, cb0[2].zzwz +mul r4.yz, r4.wwww, r1.yyzy +add r4.yzw, -r0.yyzw, r4.yyzw +dp3 r1.y, r4.yzwy, r4.yzwy +dp3 r1.z, r2.yzwy, r4.yzwy +rsq r2.x, r1.y +mad_sat r1.z, r1.z, r2.x, -cb0[3].w +mad_sat r1.y, r1.y, cb0[3].z, l(1.000000) +mad r1.y, r1.z, r1.y, r3.y +mul r3.xy, r4.xxxx, r5.xyxx +round_ne r3.xy, r3.xyxx +mad r3.xy, r3.xyxx, r3.zwzz, v1.xyxx +sample_l_indexable(texture2d)(float,float,float,float) r4.z, r3.xyxx, t0.yzxw, s0, l(0.000000) +mad r3.xy, cb0[2].xyxx, r3.xyxx, cb0[2].zwzz +mul r4.xy, r4.zzzz, r3.xyxx +add r4.xyz, -r0.yzwy, r4.xyzx +dp3 r1.z, r4.xyzx, r4.xyzx +dp3 r2.x, r2.yzwy, r4.xyzx +rsq r3.x, r1.z +mad_sat r2.x, r2.x, r3.x, -cb0[3].w +mad_sat r1.z, r1.z, cb0[3].z, l(1.000000) +mad r1.y, r2.x, r1.z, r1.y +mul r1.zw, r1.wwww, r5.xxxy +round_ne r1.zw, r1.zzzw +mad r1.zw, r1.zzzw, r3.zzzw, v1.xxxy +sample_l_indexable(texture2d)(float,float,float,float) r3.z, r1.zwzz, t0.yzxw, s0, l(0.000000) +mad r1.zw, cb0[2].xxxy, r1.zzzw, cb0[2].zzzw +mul r3.xy, r3.zzzz, r1.zwzz +add r3.xyz, -r0.yzwy, r3.xyzx +dp3 r0.y, r3.xyzx, r3.xyzx +dp3 r0.z, r2.yzwy, r3.xyzx +rsq r1.z, r0.y +mad_sat r0.z, r0.z, r1.z, -cb0[3].w +mad_sat r0.y, r0.y, cb0[3].z, l(1.000000) +mad r0.y, r0.z, r0.y, r1.y +mul r0.y, r0.y, cb0[4].y +mad r0.y, r1.x, cb0[4].x, r0.y +mad_sat r0.x, -r0.y, l(0.062500), l(1.000000) +mov o0.xy, r0.xwxx +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_DebugAO_PS_ENABLE_BLUR_1_D3D11[] = +{ + 68, 88, 66, 67, 93, 161, + 117, 213, 19, 27, 160, 186, + 33, 103, 195, 191, 179, 217, + 37, 150, 1, 0, 0, 0, + 240, 65, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 3, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 3, 12, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 48, 65, 0, 0, + 80, 0, 0, 0, 76, 16, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 90, 0, + 0, 3, 0, 96, 16, 0, + 0, 0, 0, 0, 90, 0, + 0, 3, 0, 96, 16, 0, + 1, 0, 0, 0, 88, 24, + 0, 4, 0, 112, 16, 0, + 0, 0, 0, 0, 85, 85, + 0, 0, 88, 24, 0, 4, + 0, 112, 16, 0, 1, 0, + 0, 0, 85, 85, 0, 0, + 100, 32, 0, 4, 50, 16, + 16, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 98, 16, + 0, 3, 50, 16, 16, 0, + 1, 0, 0, 0, 101, 0, + 0, 3, 50, 32, 16, 0, + 0, 0, 0, 0, 104, 0, + 0, 2, 7, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 0, 0, + 0, 0, 70, 16, 16, 0, + 1, 0, 0, 0, 150, 115, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 10, 50, 0, 16, 0, + 1, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 128, 62, 0, 0, 128, 62, + 0, 0, 0, 0, 0, 0, + 0, 0, 69, 0, 0, 139, + 194, 0, 0, 128, 67, 85, + 21, 0, 114, 0, 16, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 70, 126, 16, 0, 1, 0, + 0, 0, 0, 96, 16, 0, + 1, 0, 0, 0, 14, 0, + 0, 8, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 49, 0, 0, 7, 18, 0, + 16, 0, 2, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 31, 0, + 4, 3, 10, 0, 16, 0, + 2, 0, 0, 0, 54, 0, + 0, 5, 18, 32, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 54, 0, 0, 5, 34, 32, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 62, 0, 0, 1, + 21, 0, 0, 1, 50, 0, + 0, 11, 50, 0, 16, 0, + 2, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 16, + 16, 0, 1, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 0, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 6, 1, 16, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 18, 0, 16, 0, + 2, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 54, 0, 0, 6, + 34, 0, 16, 0, 2, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 2, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 7, 98, 0, 16, 0, + 2, 0, 0, 0, 86, 6, + 16, 0, 2, 0, 0, 0, + 6, 17, 16, 0, 1, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 18, 0, 16, 0, + 3, 0, 0, 0, 150, 5, + 16, 0, 2, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 2, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 86, 6, 16, 0, 2, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 3, 0, + 0, 0, 6, 0, 16, 0, + 3, 0, 0, 0, 86, 6, + 16, 0, 2, 0, 0, 0, + 54, 0, 0, 7, 34, 0, + 16, 0, 2, 0, 0, 0, + 42, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 2, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 7, 98, 0, + 16, 0, 2, 0, 0, 0, + 86, 6, 16, 0, 2, 0, + 0, 0, 6, 17, 16, 0, + 1, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 18, 0, + 16, 0, 4, 0, 0, 0, + 150, 5, 16, 0, 2, 0, + 0, 0, 70, 126, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 2, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 86, 6, 16, 0, + 2, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 2, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 6, 18, 0, 16, 0, + 5, 0, 0, 0, 58, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 7, 98, 0, 16, 0, + 2, 0, 0, 0, 6, 2, + 16, 0, 5, 0, 0, 0, + 86, 20, 16, 0, 1, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 34, 0, 16, 0, + 5, 0, 0, 0, 102, 10, + 16, 0, 2, 0, 0, 0, + 22, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 2, 0, 0, 0, + 86, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 86, 6, 16, 0, 2, 0, + 0, 0, 246, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 82, 0, 16, 0, 5, 0, + 0, 0, 86, 5, 16, 0, + 5, 0, 0, 0, 86, 6, + 16, 0, 2, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 6, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 54, 0, 0, 7, + 18, 0, 16, 0, 6, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 7, 98, 0, + 16, 0, 2, 0, 0, 0, + 6, 2, 16, 0, 6, 0, + 0, 0, 86, 20, 16, 0, + 1, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 34, 0, + 16, 0, 6, 0, 0, 0, + 102, 10, 16, 0, 2, 0, + 0, 0, 22, 126, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 2, 0, + 0, 0, 86, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 86, 6, 16, 0, + 2, 0, 0, 0, 246, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 82, 0, 16, 0, + 6, 0, 0, 0, 86, 5, + 16, 0, 6, 0, 0, 0, + 86, 6, 16, 0, 2, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 2, 0, + 0, 0, 246, 9, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 6, 9, 16, 0, + 3, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 3, 0, 0, 0, 118, 14, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 2, 0, + 0, 0, 150, 7, 16, 0, + 2, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 49, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 55, 0, 0, 9, 226, 0, + 16, 0, 2, 0, 0, 0, + 246, 15, 16, 0, 3, 0, + 0, 0, 86, 14, 16, 0, + 2, 0, 0, 0, 6, 9, + 16, 0, 3, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 3, 0, 0, 0, + 230, 9, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 4, 0, + 0, 0, 230, 9, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 49, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 55, 0, + 0, 9, 114, 0, 16, 0, + 3, 0, 0, 0, 246, 15, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 56, 0, + 0, 7, 114, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 226, 0, 16, 0, 2, 0, + 0, 0, 246, 9, 16, 0, + 2, 0, 0, 0, 86, 2, + 16, 0, 3, 0, 0, 0, + 6, 9, 16, 128, 65, 0, + 0, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 3, 0, 0, 0, + 150, 7, 16, 0, 2, 0, + 0, 0, 150, 7, 16, 0, + 2, 0, 0, 0, 68, 0, + 0, 5, 18, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 226, 0, + 16, 0, 2, 0, 0, 0, + 86, 14, 16, 0, 2, 0, + 0, 0, 6, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 9, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 2, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 3, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 11, 194, 0, 16, 0, + 3, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 128, 64, 0, 0, 128, 64, + 50, 0, 0, 9, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 3, 0, + 0, 0, 230, 10, 16, 0, + 3, 0, 0, 0, 70, 16, + 16, 0, 1, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 3, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 9, 18, 0, 16, 0, + 2, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 205, 204, + 76, 61, 42, 0, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 18, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 6, 0, 16, 0, 2, 0, + 0, 0, 64, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 4, 0, 0, 0, + 230, 10, 16, 0, 3, 0, + 0, 0, 70, 16, 16, 0, + 1, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 4, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 18, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 205, 204, 76, 61, + 10, 0, 16, 0, 2, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 86, 14, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 6, 9, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 5, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 2, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 5, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 5, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 6, 0, + 16, 0, 4, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 50, 0, 0, 9, + 50, 0, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 3, 0, 0, 0, + 70, 16, 16, 0, 1, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 5, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 205, 204, 76, 61, 10, 0, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 150, 7, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 5, 0, 0, 0, + 150, 7, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 5, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 0, 16, 0, 5, 0, + 0, 0, 26, 0, 16, 0, + 5, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 5, 0, 0, 0, 50, 0, + 0, 9, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 4, 0, 0, 0, 6, 4, + 16, 0, 1, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 4, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 194, 0, 16, 0, + 4, 0, 0, 0, 166, 14, + 16, 0, 4, 0, 0, 0, + 166, 14, 16, 0, 3, 0, + 0, 0, 6, 20, 16, 0, + 1, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 166, 14, 16, 0, + 4, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 230, 10, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 5, 0, + 0, 0, 150, 7, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 68, 0, 0, 5, 18, 0, + 16, 0, 5, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 130, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 5, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 34, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 10, + 194, 0, 16, 0, 4, 0, + 0, 0, 6, 4, 16, 0, + 1, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 243, 4, + 53, 63, 243, 4, 53, 63, + 50, 0, 0, 10, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 63, 58, 0, + 16, 128, 65, 0, 0, 0, + 4, 0, 0, 0, 0, 0, + 0, 7, 34, 0, 16, 0, + 5, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 1, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 5, 0, 0, 0, + 166, 14, 16, 0, 5, 0, + 0, 0, 50, 0, 0, 9, + 194, 0, 16, 0, 5, 0, + 0, 0, 166, 14, 16, 0, + 5, 0, 0, 0, 166, 14, + 16, 0, 3, 0, 0, 0, + 6, 20, 16, 0, 1, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 5, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 166, 14, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 5, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 150, 7, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 5, 0, 0, 0, + 150, 7, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 18, 0, 16, 0, + 6, 0, 0, 0, 42, 0, + 16, 0, 5, 0, 0, 0, + 50, 32, 0, 11, 130, 0, + 16, 0, 5, 0, 0, 0, + 58, 0, 16, 0, 5, 0, + 0, 0, 10, 0, 16, 0, + 6, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 5, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 66, 0, + 16, 0, 5, 0, 0, 0, + 42, 0, 16, 0, 5, 0, + 0, 0, 58, 0, 16, 0, + 5, 0, 0, 0, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 5, 0, 0, 0, 6, 0, + 16, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 5, 0, + 0, 0, 166, 14, 16, 0, + 5, 0, 0, 0, 50, 0, + 0, 9, 194, 0, 16, 0, + 5, 0, 0, 0, 166, 14, + 16, 0, 5, 0, 0, 0, + 166, 14, 16, 0, 3, 0, + 0, 0, 6, 20, 16, 0, + 1, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 5, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 166, 14, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 5, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 150, 7, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 5, 0, + 0, 0, 150, 7, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 5, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 5, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 58, 0, + 16, 0, 5, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 34, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 5, 0, + 0, 0, 6, 0, 16, 0, + 4, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 5, 0, 0, 0, + 166, 14, 16, 0, 5, 0, + 0, 0, 50, 0, 0, 9, + 194, 0, 16, 0, 5, 0, + 0, 0, 166, 14, 16, 0, + 5, 0, 0, 0, 166, 14, + 16, 0, 3, 0, 0, 0, + 6, 20, 16, 0, 1, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 5, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 166, 14, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 5, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 150, 7, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 5, 0, 0, 0, + 150, 7, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 5, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 5, 0, 0, 0, + 42, 0, 16, 0, 5, 0, + 0, 0, 58, 0, 16, 0, + 5, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 34, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 5, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 5, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 50, 0, 0, 9, 50, 0, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 230, 10, 16, 0, + 3, 0, 0, 0, 70, 16, + 16, 0, 1, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 5, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 5, 0, 0, 0, 150, 7, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 5, 0, 0, 0, 150, 7, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 5, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 0, + 16, 0, 5, 0, 0, 0, + 26, 0, 16, 0, 5, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 34, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 5, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 59, 179, 26, 0, 16, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 50, 0, 0, 9, + 34, 0, 16, 0, 5, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 46, 189, 59, 179, + 10, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 194, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 1, 0, 0, 0, 6, 4, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 194, 0, + 16, 0, 5, 0, 0, 0, + 166, 14, 16, 0, 5, 0, + 0, 0, 50, 0, 0, 9, + 194, 0, 16, 0, 5, 0, + 0, 0, 166, 14, 16, 0, + 5, 0, 0, 0, 166, 14, + 16, 0, 3, 0, 0, 0, + 6, 20, 16, 0, 1, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 5, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 166, 14, 16, 0, 5, 0, + 0, 0, 166, 142, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 230, 10, + 16, 0, 5, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 150, 7, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 5, 0, 0, 0, + 150, 7, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 5, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 66, 0, + 16, 0, 5, 0, 0, 0, + 42, 0, 16, 0, 5, 0, + 0, 0, 58, 0, 16, 0, + 5, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 42, 0, 16, 0, 5, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 5, 0, 0, 0, + 6, 0, 16, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 5, 0, 0, 0, 166, 14, + 16, 0, 5, 0, 0, 0, + 50, 0, 0, 9, 194, 0, + 16, 0, 5, 0, 0, 0, + 166, 14, 16, 0, 5, 0, + 0, 0, 166, 14, 16, 0, + 3, 0, 0, 0, 6, 20, + 16, 0, 1, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 5, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 5, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 166, 14, + 16, 0, 5, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 230, 10, 16, 0, + 5, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 150, 7, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 5, 0, 0, 0, 150, 7, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 5, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 5, 0, 0, 0, 42, 0, + 16, 0, 5, 0, 0, 0, + 58, 0, 16, 0, 5, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 34, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 5, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 194, 0, 16, 0, + 5, 0, 0, 0, 6, 0, + 16, 0, 4, 0, 0, 0, + 6, 4, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 194, 0, 16, 0, 5, 0, + 0, 0, 166, 14, 16, 0, + 5, 0, 0, 0, 50, 0, + 0, 9, 194, 0, 16, 0, + 5, 0, 0, 0, 166, 14, + 16, 0, 5, 0, 0, 0, + 166, 14, 16, 0, 3, 0, + 0, 0, 6, 20, 16, 0, + 1, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 5, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 5, 0, + 0, 0, 6, 132, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 166, 14, 16, 0, + 5, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 230, 10, 16, 0, 5, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 150, 7, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 5, 0, + 0, 0, 150, 7, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 5, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 5, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 58, 0, + 16, 0, 5, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 34, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 246, 15, 16, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 5, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 50, 0, 0, 9, + 50, 0, 16, 0, 5, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 230, 10, + 16, 0, 3, 0, 0, 0, + 70, 16, 16, 0, 1, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 5, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 5, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 5, 0, 0, 0, + 150, 7, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 5, 0, 0, 0, + 150, 7, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 68, 0, + 0, 5, 34, 0, 16, 0, + 5, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 0, 16, 0, 5, 0, + 0, 0, 26, 0, 16, 0, + 5, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 34, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 5, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 50, 0, 0, 10, 18, 0, + 16, 0, 5, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 243, 4, 53, 191, 58, 0, + 16, 128, 65, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 34, 0, 16, 0, + 5, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 243, 4, + 53, 191, 42, 0, 16, 0, + 4, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 166, 11, 16, 0, 3, 0, + 0, 0, 6, 17, 16, 0, + 1, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 86, 14, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 6, 9, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 5, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 2, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 5, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 5, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 18, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 0, 16, 0, + 2, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 166, 11, + 16, 0, 3, 0, 0, 0, + 6, 17, 16, 0, 1, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 86, 14, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 6, 9, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 5, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 2, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 5, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 0, 16, 0, 4, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 166, 11, 16, 0, + 3, 0, 0, 0, 6, 17, + 16, 0, 1, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 86, 14, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 6, 9, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 5, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 2, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 5, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 1, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 166, 11, 16, 0, 3, 0, + 0, 0, 6, 17, 16, 0, + 1, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 5, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 5, 0, 0, 0, 166, 10, + 16, 0, 5, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 86, 14, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 6, 9, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 5, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 2, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 5, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 5, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 11, + 18, 0, 16, 0, 5, 0, + 0, 0, 26, 0, 16, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 46, 189, 187, 179, 10, 0, + 16, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 5, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 46, 189, + 187, 179, 26, 0, 16, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 166, 11, + 16, 0, 3, 0, 0, 0, + 6, 17, 16, 0, 1, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 86, 14, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 6, 9, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 5, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 2, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 5, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 0, 16, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 166, 11, 16, 0, + 3, 0, 0, 0, 6, 17, + 16, 0, 1, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 86, 14, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 6, 9, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 5, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 2, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 5, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 0, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 166, 11, 16, 0, 3, 0, + 0, 0, 6, 17, 16, 0, + 1, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 86, 14, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 6, 9, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 5, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 2, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 5, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 5, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 166, 11, + 16, 0, 3, 0, 0, 0, + 6, 17, 16, 0, 1, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 86, 14, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 6, 9, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 5, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 2, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 5, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 5, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 245, 4, 53, 191, 50, 0, + 0, 10, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 241, 4, + 53, 191, 26, 0, 16, 128, + 65, 0, 0, 0, 4, 0, + 0, 0, 15, 0, 0, 10, + 34, 0, 16, 0, 5, 0, + 0, 0, 22, 5, 16, 0, + 1, 0, 0, 0, 2, 64, + 0, 0, 241, 4, 53, 191, + 245, 4, 53, 191, 0, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 166, 11, 16, 0, + 3, 0, 0, 0, 6, 17, + 16, 0, 1, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 86, 14, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 6, 9, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 5, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 2, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 5, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 0, + 16, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 166, 11, 16, 0, 3, 0, + 0, 0, 6, 17, 16, 0, + 1, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 86, 14, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 6, 9, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 5, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 2, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 5, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 5, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 0, 16, 0, + 4, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 166, 11, + 16, 0, 3, 0, 0, 0, + 6, 17, 16, 0, 1, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 86, 14, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 6, 9, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 5, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 2, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 5, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 166, 11, 16, 0, + 3, 0, 0, 0, 6, 17, + 16, 0, 1, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 5, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 5, 0, 0, 0, + 166, 10, 16, 0, 5, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 86, 14, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 6, 9, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 5, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 2, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 5, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 5, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 9, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 46, 222, + 76, 50, 26, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 34, 0, 16, 0, + 5, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 46, 222, + 76, 50, 10, 0, 16, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 166, 11, + 16, 0, 3, 0, 0, 0, + 6, 17, 16, 0, 1, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 6, 0, + 0, 0, 166, 10, 16, 0, + 6, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 86, 14, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 6, 9, 16, 0, 6, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 5, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 2, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 5, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 18, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 0, 16, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 166, 11, 16, 0, + 3, 0, 0, 0, 6, 17, + 16, 0, 1, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 129, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 6, 0, 0, 0, + 166, 10, 16, 0, 6, 0, + 0, 0, 150, 5, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 226, 0, 16, 0, + 4, 0, 0, 0, 86, 14, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 6, 9, + 16, 0, 6, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 5, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 2, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 5, 0, 0, 0, 50, 32, + 0, 11, 34, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 5, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 34, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 6, 0, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 50, 0, + 0, 9, 98, 0, 16, 0, + 4, 0, 0, 0, 86, 6, + 16, 0, 4, 0, 0, 0, + 166, 11, 16, 0, 3, 0, + 0, 0, 6, 17, 16, 0, + 1, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 150, 124, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 4, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 50, 0, 16, 0, + 6, 0, 0, 0, 166, 10, + 16, 0, 6, 0, 0, 0, + 150, 5, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 86, 14, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 6, 9, 16, 0, + 6, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 5, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 2, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 4, 0, 0, 0, + 42, 0, 16, 0, 5, 0, + 0, 0, 50, 32, 0, 11, + 34, 0, 16, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 66, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 5, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 34, 0, 16, 0, 3, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 42, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 4, 0, + 0, 0, 246, 15, 16, 0, + 1, 0, 0, 0, 6, 1, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 98, 0, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 9, + 98, 0, 16, 0, 4, 0, + 0, 0, 86, 6, 16, 0, + 4, 0, 0, 0, 166, 11, + 16, 0, 3, 0, 0, 0, + 6, 17, 16, 0, 1, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 98, 0, + 16, 0, 4, 0, 0, 0, + 6, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 86, 6, 16, 0, 4, 0, + 0, 0, 166, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 5, 0, + 0, 0, 166, 10, 16, 0, + 5, 0, 0, 0, 150, 5, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 226, 0, + 16, 0, 4, 0, 0, 0, + 86, 14, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 6, 9, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 7, + 18, 0, 16, 0, 5, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 2, 0, + 0, 0, 150, 7, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 5, 0, 0, 0, + 50, 32, 0, 11, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 5, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 34, 0, + 16, 0, 3, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 239, 4, 53, 191, 50, 0, + 0, 10, 18, 0, 16, 0, + 5, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 247, 4, + 53, 63, 26, 0, 16, 128, + 65, 0, 0, 0, 4, 0, + 0, 0, 15, 0, 0, 10, + 34, 0, 16, 0, 5, 0, + 0, 0, 22, 5, 16, 0, + 1, 0, 0, 0, 2, 64, + 0, 0, 247, 4, 53, 63, + 239, 4, 53, 191, 0, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 1, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 50, 0, 16, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 9, 50, 0, + 16, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 230, 10, 16, 0, + 3, 0, 0, 0, 70, 16, + 16, 0, 1, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 130, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 118, 114, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 0, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 98, 0, + 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 4, 0, + 0, 0, 6, 1, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 1, 0, 0, 0, 150, 7, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, + 1, 0, 0, 0, 150, 7, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 68, 0, 0, 5, + 34, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 34, 0, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 4, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 18, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 1, 0, 0, 0, 6, 0, + 16, 0, 2, 0, 0, 0, + 6, 1, 16, 0, 5, 0, + 0, 0, 64, 0, 0, 5, + 98, 0, 16, 0, 1, 0, + 0, 0, 86, 6, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 9, 98, 0, 16, 0, + 1, 0, 0, 0, 86, 6, + 16, 0, 1, 0, 0, 0, + 166, 11, 16, 0, 3, 0, + 0, 0, 6, 17, 16, 0, + 1, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 130, 0, + 16, 0, 4, 0, 0, 0, + 150, 5, 16, 0, 1, 0, + 0, 0, 118, 114, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 98, 0, 16, 0, 1, 0, + 0, 0, 6, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 86, 6, 16, 0, + 1, 0, 0, 0, 166, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 246, 15, + 16, 0, 4, 0, 0, 0, + 86, 6, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 226, 0, 16, 0, 4, 0, + 0, 0, 86, 14, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 86, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, + 1, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 150, 7, 16, 0, + 2, 0, 0, 0, 150, 7, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 18, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 50, 32, 0, 11, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 2, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 50, 32, + 0, 10, 34, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 34, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 3, 0, + 0, 0, 6, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 5, 0, 0, 0, + 64, 0, 0, 5, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 9, + 50, 0, 16, 0, 3, 0, + 0, 0, 70, 0, 16, 0, + 3, 0, 0, 0, 230, 10, + 16, 0, 3, 0, 0, 0, + 70, 16, 16, 0, 1, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 66, 0, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 150, 124, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 3, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 3, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 50, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 4, 0, 0, 0, 70, 0, + 16, 0, 3, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 2, 0, 0, 0, + 150, 7, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 18, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 50, 32, 0, 11, 18, 0, + 16, 0, 2, 0, 0, 0, + 10, 0, 16, 0, 2, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 58, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 50, 32, 0, 10, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 34, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 2, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 194, 0, + 16, 0, 1, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 6, 4, 16, 0, + 5, 0, 0, 0, 64, 0, + 0, 5, 194, 0, 16, 0, + 1, 0, 0, 0, 166, 14, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 9, 194, 0, + 16, 0, 1, 0, 0, 0, + 166, 14, 16, 0, 1, 0, + 0, 0, 166, 14, 16, 0, + 3, 0, 0, 0, 6, 20, + 16, 0, 1, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 66, 0, 16, 0, 3, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 150, 124, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 1, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 166, 14, + 16, 0, 1, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 50, 0, + 16, 0, 3, 0, 0, 0, + 166, 10, 16, 0, 3, 0, + 0, 0, 230, 10, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 3, 0, 0, 0, 150, 7, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 0, 0, 0, 0, 150, 7, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 68, 0, 0, 5, + 66, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 50, 32, + 0, 11, 66, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 50, 32, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 34, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 26, 128, 32, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 50, 0, 0, 10, 34, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 10, 128, 32, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 50, 32, + 0, 10, 18, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 61, + 1, 64, 0, 0, 0, 0, + 128, 63, 54, 0, 0, 5, + 50, 32, 16, 0, 0, 0, + 0, 0, 198, 0, 16, 0, + 0, 0, 0, 0, 62, 0, + 0, 1 +}; + +namespace Generated +{ + void DebugAO_PS::Create(DevicePointer Device) + { + m_Shader[ShaderPermutations::ENABLE_BLUR_0].Create(Device, g_DebugAO_PS_ENABLE_BLUR_0_D3D11, sizeof(g_DebugAO_PS_ENABLE_BLUR_0_D3D11)); + m_Shader[ShaderPermutations::ENABLE_BLUR_1].Create(Device, g_DebugAO_PS_ENABLE_BLUR_1_D3D11, sizeof(g_DebugAO_PS_ENABLE_BLUR_1_D3D11)); + } + + void DebugAO_PS::Release(DevicePointer Device) + { + m_Shader[ShaderPermutations::ENABLE_BLUR_0].Release(Device); + m_Shader[ShaderPermutations::ENABLE_BLUR_1].Release(Device); + } +} diff --git a/src/shaders/out/d3d11/DebugAO_PS.h b/src/shaders/out/d3d11/DebugAO_PS.h new file mode 100644 index 0000000..4c1d701 --- /dev/null +++ b/src/shaders/out/d3d11/DebugAO_PS.h @@ -0,0 +1,38 @@ +//! This file was auto-generated. Do not modify manually. +#pragma once + +namespace Generated +{ + +namespace ShaderPermutations +{ + +#ifndef ENABLE_BLUR_DEFINED +#define ENABLE_BLUR_DEFINED + enum ENABLE_BLUR + { + ENABLE_BLUR_0, + ENABLE_BLUR_1, + ENABLE_BLUR_COUNT, + }; +#endif + +}; + +struct DebugAO_PS +{ + void Create(DevicePointer Device); + void Release(DevicePointer Device); + PixelShader& Get(ShaderPermutations::ENABLE_BLUR A) + { + return m_Shader[A]; + } + +private: + PixelShader m_Shader[ShaderPermutations::ENABLE_BLUR_COUNT]; +#if _WIN32 + static_assert(ShaderPermutations::ENABLE_BLUR_COUNT == 2, ""); +#endif +}; + +}; diff --git a/src/shaders/out/d3d11/DebugNormals_PS.cpp b/src/shaders/out/d3d11/DebugNormals_PS.cpp new file mode 100644 index 0000000..b3e6aeb --- /dev/null +++ b/src/shaders/out/d3d11/DebugNormals_PS.cpp @@ -0,0 +1,801 @@ +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[9], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2d (float,float,float,float) t0 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.xyzw +dcl_temps 5 +mov r0.y, cb0[1].z +mov r0.z, l(0) +add r0.xw, v0.yyyx, -cb0[7].yyyx +mad r0.yz, r0.wwxw, cb0[1].zzwz, r0.yyzy +mad r1.xy, cb0[2].xyxx, r0.yzyy, cb0[2].zwzz +sample_l_indexable(texture2d)(float,float,float,float) r2.x, r0.yzyy, t0.xyzw, s0, l(0.000000) +mul r2.yz, r1.xxyx, r2.xxxx +mul r0.yz, r0.xxwx, cb0[1].wwzw +mad r1.xy, cb0[2].yxyy, r0.yzyy, cb0[2].wzww +sample_l_indexable(texture2d)(float,float,float,float) r3.y, r0.zyzz, t0.yxzw, s0, l(0.000000) +mul r3.xz, r1.xxyx, r3.yyyy +add r1.xyz, r2.xyzx, -r3.yzxy +dp3 r0.y, r1.xyzx, r1.xyzx +mov r2.y, -cb0[1].z +mov r2.z, l(0) +mad r2.xy, r0.wxww, cb0[1].zwzz, r2.yzyy +mad r2.zw, cb0[2].xxxy, r2.xxxy, cb0[2].zzzw +sample_l_indexable(texture2d)(float,float,float,float) r4.x, r2.xyxx, t0.xyzw, s0, l(0.000000) +mul r4.yz, r2.zzwz, r4.xxxx +add r2.xyz, r3.yzxy, -r4.xyzx +dp3 r0.z, r2.xyzx, r2.xyzx +lt r0.y, r0.y, r0.z +movc r1.xyz, r0.yyyy, r1.xyzx, r2.xyzx +mov r2.z, l(0) +mov r2.x, cb0[1].w +mad r0.yz, r0.xxwx, cb0[1].wwzw, r2.xxzx +mad r2.xy, cb0[2].yxyy, r0.yzyy, cb0[2].wzww +sample_l_indexable(texture2d)(float,float,float,float) r4.y, r0.zyzz, t0.yxzw, s0, l(0.000000) +mul r4.xz, r2.xxyx, r4.yyyy +add r2.xyz, -r3.xyzx, r4.xyzx +dp3 r0.y, r2.xyzx, r2.xyzx +mov r4.z, l(0) +mov r4.x, -cb0[1].w +mad r0.xz, r0.xxwx, cb0[1].wwzw, r4.xxzx +mad r4.xy, cb0[2].yxyy, r0.xzxx, cb0[2].wzww +sample_l_indexable(texture2d)(float,float,float,float) r0.z, r0.zxzz, t0.ywxz, s0, l(0.000000) +mul r0.xw, r0.zzzz, r4.xxxy +add r0.xzw, -r0.xxzw, r3.xxyz +dp3 r1.w, r0.xzwx, r0.xzwx +lt r0.y, r0.y, r1.w +movc r0.xyz, r0.yyyy, r2.xyzx, r0.xzwx +mul r2.xyz, r0.xyzx, r1.xyzx +mad r0.xyz, r1.zxyz, r0.yzxy, -r2.xyzx +dp3 r0.w, r0.xyzx, r0.xyzx +rsq r0.w, r0.w +mul r0.xyz, r0.wwww, r0.xyzx +ieq r1.xy, cb0[8].zzzz, l(1, 2, 0, 0) +movc r1.yzw, r1.yyyy, -r0.zzzz, -r0.xxyz +movc r0.yzw, r1.xxxx, -r0.yyyy, r1.yyzw +movc o0.xyz, cb0[8].zzzz, r0.yzwy, -r0.xxxx +mov o0.w, l(0) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_DebugNormals_PS_FETCH_GBUFFER_NORMAL_0_D3D11[] = +{ + 68, 88, 66, 67, 84, 112, + 28, 83, 136, 199, 215, 224, + 225, 10, 25, 17, 62, 247, + 79, 29, 1, 0, 0, 0, + 232, 7, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 40, 7, 0, 0, + 80, 0, 0, 0, 202, 1, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 90, 0, + 0, 3, 0, 96, 16, 0, + 0, 0, 0, 0, 88, 24, + 0, 4, 0, 112, 16, 0, + 0, 0, 0, 0, 85, 85, + 0, 0, 100, 32, 0, 4, + 50, 16, 16, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 101, 0, 0, 3, 242, 32, + 16, 0, 0, 0, 0, 0, + 104, 0, 0, 2, 5, 0, + 0, 0, 54, 0, 0, 6, + 34, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 66, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 9, 146, 0, 16, 0, + 0, 0, 0, 0, 86, 17, + 16, 0, 0, 0, 0, 0, + 86, 129, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 50, 0, + 0, 10, 98, 0, 16, 0, + 0, 0, 0, 0, 246, 12, + 16, 0, 0, 0, 0, 0, + 166, 139, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 86, 6, 16, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 1, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 150, 5, 16, 0, + 0, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 18, 0, + 16, 0, 2, 0, 0, 0, + 150, 5, 16, 0, 0, 0, + 0, 0, 70, 126, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 98, 0, 16, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 1, 0, 0, 0, 6, 0, + 16, 0, 2, 0, 0, 0, + 56, 0, 0, 8, 98, 0, + 16, 0, 0, 0, 0, 0, + 6, 3, 16, 0, 0, 0, + 0, 0, 246, 142, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 1, 0, + 0, 0, 22, 133, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 150, 5, 16, 0, + 0, 0, 0, 0, 182, 143, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 34, 0, + 16, 0, 3, 0, 0, 0, + 102, 10, 16, 0, 0, 0, + 0, 0, 22, 126, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 82, 0, 16, 0, 3, 0, + 0, 0, 6, 1, 16, 0, + 1, 0, 0, 0, 86, 5, + 16, 0, 3, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 150, 4, 16, 128, + 65, 0, 0, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 7, 34, 0, + 16, 0, 2, 0, 0, 0, + 42, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 2, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 10, 50, 0, + 16, 0, 2, 0, 0, 0, + 54, 15, 16, 0, 0, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 150, 5, 16, 0, + 2, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 2, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 2, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 18, 0, 16, 0, 4, 0, + 0, 0, 70, 0, 16, 0, + 2, 0, 0, 0, 70, 126, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 4, 0, 0, 0, 166, 11, + 16, 0, 2, 0, 0, 0, + 6, 0, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 2, 0, + 0, 0, 150, 4, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 49, 0, 0, 7, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 55, 0, 0, 9, 114, 0, + 16, 0, 1, 0, 0, 0, + 86, 5, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 2, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 54, 0, 0, 6, + 18, 0, 16, 0, 2, 0, + 0, 0, 58, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 98, 0, 16, 0, 0, 0, + 0, 0, 6, 3, 16, 0, + 0, 0, 0, 0, 246, 142, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 6, 2, + 16, 0, 2, 0, 0, 0, + 50, 0, 0, 11, 50, 0, + 16, 0, 2, 0, 0, 0, + 22, 133, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 150, 5, 16, 0, 0, 0, + 0, 0, 182, 143, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 34, 0, 16, 0, + 4, 0, 0, 0, 102, 10, + 16, 0, 0, 0, 0, 0, + 22, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 82, 0, + 16, 0, 4, 0, 0, 0, + 6, 1, 16, 0, 2, 0, + 0, 0, 86, 5, 16, 0, + 4, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 34, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 54, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 82, 0, 16, 0, + 0, 0, 0, 0, 6, 3, + 16, 0, 0, 0, 0, 0, + 246, 142, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 6, 2, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 4, 0, + 0, 0, 22, 133, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 134, 0, 16, 0, + 0, 0, 0, 0, 182, 143, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 66, 0, + 16, 0, 0, 0, 0, 0, + 38, 10, 16, 0, 0, 0, + 0, 0, 214, 120, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 146, 0, 16, 0, 0, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 210, 0, + 16, 0, 0, 0, 0, 0, + 6, 14, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 6, 9, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 134, 3, 16, 0, + 0, 0, 0, 0, 134, 3, + 16, 0, 0, 0, 0, 0, + 49, 0, 0, 7, 34, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 55, 0, + 0, 9, 114, 0, 16, 0, + 0, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 134, 3, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 114, 0, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 114, 0, 16, 0, 0, 0, + 0, 0, 38, 9, 16, 0, + 1, 0, 0, 0, 150, 4, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 0, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 114, 0, + 16, 0, 0, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 0, 0, 0, 0, 32, 0, + 0, 11, 50, 0, 16, 0, + 1, 0, 0, 0, 166, 138, + 32, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 2, 64, + 0, 0, 1, 0, 0, 0, + 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 55, 0, 0, 11, 226, 0, + 16, 0, 1, 0, 0, 0, + 86, 5, 16, 0, 1, 0, + 0, 0, 166, 10, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 55, 0, 0, 10, + 226, 0, 16, 0, 0, 0, + 0, 0, 6, 0, 16, 0, + 1, 0, 0, 0, 86, 5, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 86, 14, + 16, 0, 1, 0, 0, 0, + 55, 0, 0, 11, 114, 32, + 16, 0, 0, 0, 0, 0, + 166, 138, 32, 0, 0, 0, + 0, 0, 8, 0, 0, 0, + 150, 7, 16, 0, 0, 0, + 0, 0, 6, 0, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 54, 0, 0, 5, + 130, 32, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 62, 0, + 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[14], immediateIndexed +dcl_resource_texture2d (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.xyzw +dcl_temps 2 +ftoi r0.xy, v0.xyxx +mov r0.zw, l(0,0,0,0) +ld_indexable(texture2d)(float,float,float,float) r0.xyz, r0.xyzw, t1.xyzw +mad r0.xyz, r0.xyzx, cb0[13].xxxx, cb0[13].yyyy +mul r1.xyz, r0.yyyy, cb0[10].xyzx +mad r0.xyw, r0.xxxx, cb0[9].xyxz, r1.xyxz +mad r0.xyz, r0.zzzz, cb0[11].xyzx, r0.xywx +dp3 r0.w, r0.xyzx, r0.xyzx +rsq r0.w, r0.w +mul r0.xyz, r0.wwww, r0.xyzx +ieq r1.xy, cb0[8].zzzz, l(1, 2, 0, 0) +movc r1.yzw, r1.yyyy, -r0.zzzz, -r0.xxyz +movc r0.yzw, r1.xxxx, -r0.yyyy, r1.yyzw +movc o0.xyz, cb0[8].zzzz, r0.yzwy, -r0.xxxx +mov o0.w, l(0) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_DebugNormals_PS_FETCH_GBUFFER_NORMAL_1_D3D11[] = +{ + 68, 88, 66, 67, 163, 13, + 229, 178, 205, 16, 29, 122, + 39, 148, 83, 188, 231, 187, + 229, 36, 1, 0, 0, 0, + 20, 3, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 84, 2, 0, 0, + 80, 0, 0, 0, 149, 0, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 88, 24, + 0, 4, 0, 112, 16, 0, + 1, 0, 0, 0, 85, 85, + 0, 0, 100, 32, 0, 4, + 50, 16, 16, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 101, 0, 0, 3, 242, 32, + 16, 0, 0, 0, 0, 0, + 104, 0, 0, 2, 2, 0, + 0, 0, 27, 0, 0, 5, + 50, 0, 16, 0, 0, 0, + 0, 0, 70, 16, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 8, 194, 0, 16, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 45, 0, 0, 137, 194, 0, + 0, 128, 67, 85, 21, 0, + 114, 0, 16, 0, 0, 0, + 0, 0, 70, 14, 16, 0, + 0, 0, 0, 0, 70, 126, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 11, 114, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 0, 0, + 0, 0, 6, 128, 32, 0, + 0, 0, 0, 0, 13, 0, + 0, 0, 86, 133, 32, 0, + 0, 0, 0, 0, 13, 0, + 0, 0, 56, 0, 0, 8, + 114, 0, 16, 0, 1, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 70, 130, + 32, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 50, 0, + 0, 10, 178, 0, 16, 0, + 0, 0, 0, 0, 6, 0, + 16, 0, 0, 0, 0, 0, + 70, 136, 32, 0, 0, 0, + 0, 0, 9, 0, 0, 0, + 70, 8, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 114, 0, 16, 0, 0, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 130, + 32, 0, 0, 0, 0, 0, + 11, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 0, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 114, 0, + 16, 0, 0, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 0, 0, 0, 0, 32, 0, + 0, 11, 50, 0, 16, 0, + 1, 0, 0, 0, 166, 138, + 32, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 2, 64, + 0, 0, 1, 0, 0, 0, + 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 55, 0, 0, 11, 226, 0, + 16, 0, 1, 0, 0, 0, + 86, 5, 16, 0, 1, 0, + 0, 0, 166, 10, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 6, 9, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 55, 0, 0, 10, + 226, 0, 16, 0, 0, 0, + 0, 0, 6, 0, 16, 0, + 1, 0, 0, 0, 86, 5, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 86, 14, + 16, 0, 1, 0, 0, 0, + 55, 0, 0, 11, 114, 32, + 16, 0, 0, 0, 0, 0, + 166, 138, 32, 0, 0, 0, + 0, 0, 8, 0, 0, 0, + 150, 7, 16, 0, 0, 0, + 0, 0, 6, 0, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 54, 0, 0, 5, + 130, 32, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 62, 0, + 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[14], immediateIndexed +dcl_resource_texture2dms(0) (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.xyzw +dcl_temps 2 +ftoi r0.xy, v0.xyxx +mov r0.zw, l(0,0,0,0) +ldms_indexable(texture2dms)(float,float,float,float) r0.xyz, r0.xyzw, t1.xyzw, l(0) +mad r0.xyz, r0.xyzx, cb0[13].xxxx, cb0[13].yyyy +mul r1.xyz, r0.yyyy, cb0[10].xyzx +mad r0.xyw, r0.xxxx, cb0[9].xyxz, r1.xyxz +mad r0.xyz, r0.zzzz, cb0[11].xyzx, r0.xywx +dp3 r0.w, r0.xyzx, r0.xyzx +rsq r0.w, r0.w +mul r0.xyz, r0.wwww, r0.xyzx +ieq r1.xy, cb0[8].zzzz, l(1, 2, 0, 0) +movc r1.yzw, r1.yyyy, -r0.zzzz, -r0.xxyz +movc r0.yzw, r1.xxxx, -r0.yyyy, r1.yyzw +movc o0.xyz, cb0[8].zzzz, r0.yzwy, -r0.xxxx +mov o0.w, l(0) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_DebugNormals_PS_FETCH_GBUFFER_NORMAL_2_D3D11[] = +{ + 68, 88, 66, 67, 34, 127, + 46, 58, 101, 211, 8, 235, + 151, 213, 82, 134, 109, 167, + 144, 55, 1, 0, 0, 0, + 28, 3, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 92, 2, 0, 0, + 80, 0, 0, 0, 151, 0, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 88, 32, + 0, 4, 0, 112, 16, 0, + 1, 0, 0, 0, 85, 85, + 0, 0, 100, 32, 0, 4, + 50, 16, 16, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 101, 0, 0, 3, 242, 32, + 16, 0, 0, 0, 0, 0, + 104, 0, 0, 2, 2, 0, + 0, 0, 27, 0, 0, 5, + 50, 0, 16, 0, 0, 0, + 0, 0, 70, 16, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 8, 194, 0, 16, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 46, 0, 0, 139, 2, 1, + 0, 128, 67, 85, 21, 0, + 114, 0, 16, 0, 0, 0, + 0, 0, 70, 14, 16, 0, + 0, 0, 0, 0, 70, 126, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, + 114, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 0, 0, 0, 0, 6, 128, + 32, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 86, 133, + 32, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 56, 0, + 0, 8, 114, 0, 16, 0, + 1, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 70, 130, 32, 0, 0, 0, + 0, 0, 10, 0, 0, 0, + 50, 0, 0, 10, 178, 0, + 16, 0, 0, 0, 0, 0, + 6, 0, 16, 0, 0, 0, + 0, 0, 70, 136, 32, 0, + 0, 0, 0, 0, 9, 0, + 0, 0, 70, 8, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 114, 0, 16, 0, + 0, 0, 0, 0, 166, 10, + 16, 0, 0, 0, 0, 0, + 70, 130, 32, 0, 0, 0, + 0, 0, 11, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 0, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 114, 0, 16, 0, 0, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 0, 0, 0, 0, + 32, 0, 0, 11, 50, 0, + 16, 0, 1, 0, 0, 0, + 166, 138, 32, 0, 0, 0, + 0, 0, 8, 0, 0, 0, + 2, 64, 0, 0, 1, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 55, 0, 0, 11, + 226, 0, 16, 0, 1, 0, + 0, 0, 86, 5, 16, 0, + 1, 0, 0, 0, 166, 10, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 6, 9, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 55, 0, + 0, 10, 226, 0, 16, 0, + 0, 0, 0, 0, 6, 0, + 16, 0, 1, 0, 0, 0, + 86, 5, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 86, 14, 16, 0, 1, 0, + 0, 0, 55, 0, 0, 11, + 114, 32, 16, 0, 0, 0, + 0, 0, 166, 138, 32, 0, + 0, 0, 0, 0, 8, 0, + 0, 0, 150, 7, 16, 0, + 0, 0, 0, 0, 6, 0, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 130, 32, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 62, 0, 0, 1 +}; + +namespace Generated +{ + void DebugNormals_PS::Create(DevicePointer Device) + { + m_Shader[ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Create(Device, g_DebugNormals_PS_FETCH_GBUFFER_NORMAL_0_D3D11, sizeof(g_DebugNormals_PS_FETCH_GBUFFER_NORMAL_0_D3D11)); + m_Shader[ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Create(Device, g_DebugNormals_PS_FETCH_GBUFFER_NORMAL_1_D3D11, sizeof(g_DebugNormals_PS_FETCH_GBUFFER_NORMAL_1_D3D11)); + m_Shader[ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Create(Device, g_DebugNormals_PS_FETCH_GBUFFER_NORMAL_2_D3D11, sizeof(g_DebugNormals_PS_FETCH_GBUFFER_NORMAL_2_D3D11)); + } + + void DebugNormals_PS::Release(DevicePointer Device) + { + m_Shader[ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Release(Device); + m_Shader[ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Release(Device); + m_Shader[ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Release(Device); + } +} diff --git a/src/shaders/out/d3d11/DebugNormals_PS.h b/src/shaders/out/d3d11/DebugNormals_PS.h new file mode 100644 index 0000000..85509b0 --- /dev/null +++ b/src/shaders/out/d3d11/DebugNormals_PS.h @@ -0,0 +1,39 @@ +//! This file was auto-generated. Do not modify manually. +#pragma once + +namespace Generated +{ + +namespace ShaderPermutations +{ + +#ifndef FETCH_GBUFFER_NORMAL_DEFINED +#define FETCH_GBUFFER_NORMAL_DEFINED + enum FETCH_GBUFFER_NORMAL + { + FETCH_GBUFFER_NORMAL_0, + FETCH_GBUFFER_NORMAL_1, + FETCH_GBUFFER_NORMAL_2, + FETCH_GBUFFER_NORMAL_COUNT, + }; +#endif + +}; + +struct DebugNormals_PS +{ + void Create(DevicePointer Device); + void Release(DevicePointer Device); + PixelShader& Get(ShaderPermutations::FETCH_GBUFFER_NORMAL A) + { + return m_Shader[A]; + } + +private: + PixelShader m_Shader[ShaderPermutations::FETCH_GBUFFER_NORMAL_COUNT]; +#if _WIN32 + static_assert(ShaderPermutations::FETCH_GBUFFER_NORMAL_COUNT == 3, ""); +#endif +}; + +}; diff --git a/src/shaders/out/d3d11/DeinterleaveDepth_PS.cpp b/src/shaders/out/d3d11/DeinterleaveDepth_PS.cpp new file mode 100644 index 0000000..35dc0a2 --- /dev/null +++ b/src/shaders/out/d3d11/DeinterleaveDepth_PS.cpp @@ -0,0 +1,235 @@ +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 x 0 TARGET float x +// SV_Target 1 x 1 TARGET float x +// SV_Target 2 x 2 TARGET float x +// SV_Target 3 x 3 TARGET float x +// SV_Target 4 x 4 TARGET float x +// SV_Target 5 x 5 TARGET float x +// SV_Target 6 x 6 TARGET float x +// SV_Target 7 x 7 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[2], immediateIndexed +dcl_constantbuffer cb1[2], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2d (float,float,float,float) t0 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_output o1.x +dcl_output o2.x +dcl_output o3.x +dcl_output o4.x +dcl_output o5.x +dcl_output o6.x +dcl_output o7.x +dcl_temps 2 +round_ni r0.xy, v0.xyxx +mad r0.xy, r0.xyxx, l(4.000000, 4.000000, 0.000000, 0.000000), cb1[1].xyxx +add r0.xy, r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) +mul r0.xy, r0.xyxx, cb0[1].zwzz +gather4_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyxx, t0.xyzw, s0.x +gather4_aoffimmi_indexable(2,0,0)(texture2d)(float,float,float,float) r0.xyzw, r0.xyxx, t0.xyzw, s0.x +mov o0.x, r1.w +mov o1.x, r1.z +mov o2.x, r0.w +mov o3.x, r0.z +mov o4.x, r1.x +mov o5.x, r1.y +mov o6.x, r0.x +mov o7.x, r0.y +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_DeinterleaveDepth_PS_D3D11[] = +{ + 68, 88, 66, 67, 68, 196, + 145, 220, 76, 140, 243, 86, + 140, 201, 64, 71, 88, 71, + 88, 143, 1, 0, 0, 0, + 184, 3, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 96, 1, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 212, 0, + 0, 0, 8, 0, 0, 0, + 8, 0, 0, 0, 200, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 200, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 0, 0, 0, + 1, 14, 0, 0, 200, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 2, 0, 0, 0, + 1, 14, 0, 0, 200, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 3, 0, 0, 0, + 1, 14, 0, 0, 200, 0, + 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 4, 0, 0, 0, + 1, 14, 0, 0, 200, 0, + 0, 0, 5, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 5, 0, 0, 0, + 1, 14, 0, 0, 200, 0, + 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 6, 0, 0, 0, + 1, 14, 0, 0, 200, 0, + 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 7, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 97, 114, 103, 101, + 116, 0, 171, 171, 83, 72, + 69, 88, 80, 2, 0, 0, + 80, 0, 0, 0, 148, 0, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 89, 0, + 0, 4, 70, 142, 32, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 24, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 100, 32, 0, 4, 50, 16, + 16, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 101, 0, + 0, 3, 18, 32, 16, 0, + 0, 0, 0, 0, 101, 0, + 0, 3, 18, 32, 16, 0, + 1, 0, 0, 0, 101, 0, + 0, 3, 18, 32, 16, 0, + 2, 0, 0, 0, 101, 0, + 0, 3, 18, 32, 16, 0, + 3, 0, 0, 0, 101, 0, + 0, 3, 18, 32, 16, 0, + 4, 0, 0, 0, 101, 0, + 0, 3, 18, 32, 16, 0, + 5, 0, 0, 0, 101, 0, + 0, 3, 18, 32, 16, 0, + 6, 0, 0, 0, 101, 0, + 0, 3, 18, 32, 16, 0, + 7, 0, 0, 0, 104, 0, + 0, 2, 2, 0, 0, 0, + 65, 0, 0, 5, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 16, 16, 0, 0, 0, + 0, 0, 50, 0, 0, 13, + 50, 0, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 128, 64, + 0, 0, 128, 64, 0, 0, + 0, 0, 0, 0, 0, 0, + 70, 128, 32, 0, 1, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 10, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 63, 0, 0, + 0, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 8, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 109, 0, 0, 139, 194, 0, + 0, 128, 67, 85, 21, 0, + 242, 0, 16, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 70, 126, + 16, 0, 0, 0, 0, 0, + 10, 96, 16, 0, 0, 0, + 0, 0, 109, 0, 0, 140, + 1, 4, 0, 128, 194, 0, + 0, 128, 67, 85, 21, 0, + 242, 0, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 70, 126, + 16, 0, 0, 0, 0, 0, + 10, 96, 16, 0, 0, 0, + 0, 0, 54, 0, 0, 5, + 18, 32, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 18, 32, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 18, 32, + 16, 0, 2, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 54, 0, 0, 5, + 18, 32, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 18, 32, 16, 0, + 4, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 18, 32, + 16, 0, 5, 0, 0, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 18, 32, 16, 0, 6, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 18, 32, 16, 0, + 7, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 62, 0, 0, 1 +}; + +namespace Generated +{ + void DeinterleaveDepth_PS::Create(DevicePointer Device) + { + m_Shader.Create(Device, g_DeinterleaveDepth_PS_D3D11, sizeof(g_DeinterleaveDepth_PS_D3D11)); + } + + void DeinterleaveDepth_PS::Release(DevicePointer Device) + { + m_Shader.Release(Device); + } +} diff --git a/src/shaders/out/d3d11/DeinterleaveDepth_PS.h b/src/shaders/out/d3d11/DeinterleaveDepth_PS.h new file mode 100644 index 0000000..f1b555e --- /dev/null +++ b/src/shaders/out/d3d11/DeinterleaveDepth_PS.h @@ -0,0 +1,27 @@ +//! This file was auto-generated. Do not modify manually. +#pragma once + +namespace Generated +{ + +namespace ShaderPermutations +{ + +}; + +struct DeinterleaveDepth_PS +{ + void Create(DevicePointer Device); + void Release(DevicePointer Device); + PixelShader& Get() + { + return m_Shader; + } + +private: + PixelShader m_Shader; +#if _WIN32 +#endif +}; + +}; diff --git a/src/shaders/out/d3d11/FullScreenTriangle_VS.cpp b/src/shaders/out/d3d11/FullScreenTriangle_VS.cpp new file mode 100644 index 0000000..f30fdc2 --- /dev/null +++ b/src/shaders/out/d3d11/FullScreenTriangle_VS.cpp @@ -0,0 +1,129 @@ +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_VertexID 0 x 0 VERTID uint x +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xyzw +// TEXCOORD 0 xy 1 NONE float xy +// +vs_5_0 +dcl_globalFlags refactoringAllowed +dcl_input_sgv v0.x, vertex_id +dcl_output_siv o0.xyzw, position +dcl_output o1.xy +dcl_temps 1 +bfi r0.x, l(1), l(1), v0.x, l(0) +and r0.z, v0.x, l(2) +utof r0.xy, r0.xzxx +mad o0.xy, r0.xyxx, l(2.000000, -2.000000, 0.000000, 0.000000), l(-1.000000, 1.000000, 0.000000, 0.000000) +mov o1.xy, r0.xyxx +mov o0.zw, l(0,0,0,1.000000) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_FullScreenTriangle_VS_D3D11[] = +{ + 68, 88, 66, 67, 212, 174, + 214, 75, 165, 110, 37, 2, + 13, 22, 148, 133, 215, 169, + 157, 38, 1, 0, 0, 0, + 208, 1, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 96, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 44, 0, 0, 0, 1, 0, + 0, 0, 8, 0, 0, 0, + 32, 0, 0, 0, 0, 0, + 0, 0, 6, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 0, 0, + 83, 86, 95, 86, 101, 114, + 116, 101, 120, 73, 68, 0, + 79, 83, 71, 78, 80, 0, + 0, 0, 2, 0, 0, 0, + 8, 0, 0, 0, 56, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 68, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 0, 0, 0, + 3, 12, 0, 0, 83, 86, + 95, 80, 111, 115, 105, 116, + 105, 111, 110, 0, 84, 69, + 88, 67, 79, 79, 82, 68, + 0, 171, 171, 171, 83, 72, + 69, 88, 16, 1, 0, 0, + 80, 0, 1, 0, 68, 0, + 0, 0, 106, 8, 0, 1, + 96, 0, 0, 4, 18, 16, + 16, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 103, 0, + 0, 4, 242, 32, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 50, 32, 16, 0, 1, 0, + 0, 0, 104, 0, 0, 2, + 1, 0, 0, 0, 140, 0, + 0, 11, 18, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 1, 0, + 0, 0, 10, 16, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 10, 16, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 2, 0, 0, 0, 86, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 134, 0, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 15, 50, 32, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 64, 0, 0, + 0, 192, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 128, 191, + 0, 0, 128, 63, 0, 0, + 0, 0, 0, 0, 0, 0, + 54, 0, 0, 5, 50, 32, + 16, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 54, 0, 0, 8, + 194, 32, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 128, 63, 62, 0, + 0, 1 +}; + +namespace Generated +{ + void FullScreenTriangle_VS::Create(DevicePointer Device) + { + m_Shader.Create(Device, g_FullScreenTriangle_VS_D3D11, sizeof(g_FullScreenTriangle_VS_D3D11)); + } + + void FullScreenTriangle_VS::Release(DevicePointer Device) + { + m_Shader.Release(Device); + } +} diff --git a/src/shaders/out/d3d11/FullScreenTriangle_VS.h b/src/shaders/out/d3d11/FullScreenTriangle_VS.h new file mode 100644 index 0000000..47c855c --- /dev/null +++ b/src/shaders/out/d3d11/FullScreenTriangle_VS.h @@ -0,0 +1,27 @@ +//! This file was auto-generated. Do not modify manually. +#pragma once + +namespace Generated +{ + +namespace ShaderPermutations +{ + +}; + +struct FullScreenTriangle_VS +{ + void Create(DevicePointer Device); + void Release(DevicePointer Device); + VertexShader& Get() + { + return m_Shader; + } + +private: + VertexShader m_Shader; +#if _WIN32 +#endif +}; + +}; diff --git a/src/shaders/out/d3d11/LinearizeDepth_PS.cpp b/src/shaders/out/d3d11/LinearizeDepth_PS.cpp new file mode 100644 index 0000000..ad24be7 --- /dev/null +++ b/src/shaders/out/d3d11/LinearizeDepth_PS.cpp @@ -0,0 +1,272 @@ +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[8], immediateIndexed +dcl_resource_texture2d (float,float,float,float) t0 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 1 +add r0.xy, v0.xyxx, cb0[7].xyxx +ftoi r0.xy, r0.xyxx +mov r0.zw, l(0,0,0,0) +ld_indexable(texture2d)(float,float,float,float) r0.x, r0.xyzw, t0.xyzw +mad_sat r0.x, cb0[6].z, r0.x, cb0[6].w +mad r0.x, r0.x, cb0[6].x, cb0[6].y +div o0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_LinearizeDepth_PS_RESOLVE_DEPTH_0_D3D11[] = +{ + 68, 88, 66, 67, 143, 107, + 98, 163, 29, 194, 143, 73, + 101, 95, 229, 36, 236, 183, + 118, 34, 1, 0, 0, 0, + 12, 2, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 76, 1, 0, 0, + 80, 0, 0, 0, 83, 0, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 88, 24, + 0, 4, 0, 112, 16, 0, + 0, 0, 0, 0, 85, 85, + 0, 0, 100, 32, 0, 4, + 50, 16, 16, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 101, 0, 0, 3, 18, 32, + 16, 0, 0, 0, 0, 0, + 104, 0, 0, 2, 1, 0, + 0, 0, 0, 0, 0, 8, + 50, 0, 16, 0, 0, 0, + 0, 0, 70, 16, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 27, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 54, 0, 0, 8, 194, 0, + 16, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 45, 0, 0, 137, + 194, 0, 0, 128, 67, 85, + 21, 0, 18, 0, 16, 0, + 0, 0, 0, 0, 70, 14, + 16, 0, 0, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 50, 32, 0, 11, + 18, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 6, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 58, 128, + 32, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 50, 0, + 0, 11, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 6, 0, 0, 0, + 26, 128, 32, 0, 0, 0, + 0, 0, 6, 0, 0, 0, + 14, 0, 0, 10, 18, 32, + 16, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 128, 63, 0, 0, 128, 63, + 0, 0, 128, 63, 0, 0, + 128, 63, 10, 0, 16, 0, + 0, 0, 0, 0, 62, 0, + 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 x 0 TARGET float x +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[8], immediateIndexed +dcl_resource_texture2dms(0) (float,float,float,float) t0 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.x +dcl_temps 1 +add r0.xy, v0.xyxx, cb0[7].xyxx +ftoi r0.xy, r0.xyxx +mov r0.zw, l(0,0,0,0) +ldms_indexable(texture2dms)(float,float,float,float) r0.x, r0.xyzw, t0.xyzw, l(0) +mad_sat r0.x, cb0[6].z, r0.x, cb0[6].w +mad r0.x, r0.x, cb0[6].x, cb0[6].y +div o0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_LinearizeDepth_PS_RESOLVE_DEPTH_1_D3D11[] = +{ + 68, 88, 66, 67, 89, 242, + 176, 163, 192, 9, 27, 137, + 99, 230, 79, 67, 181, 241, + 226, 37, 1, 0, 0, 0, + 20, 2, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 1, 14, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 84, 1, 0, 0, + 80, 0, 0, 0, 85, 0, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 88, 32, + 0, 4, 0, 112, 16, 0, + 0, 0, 0, 0, 85, 85, + 0, 0, 100, 32, 0, 4, + 50, 16, 16, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 101, 0, 0, 3, 18, 32, + 16, 0, 0, 0, 0, 0, + 104, 0, 0, 2, 1, 0, + 0, 0, 0, 0, 0, 8, + 50, 0, 16, 0, 0, 0, + 0, 0, 70, 16, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 27, 0, + 0, 5, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 54, 0, 0, 8, 194, 0, + 16, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 46, 0, 0, 139, + 2, 1, 0, 128, 67, 85, + 21, 0, 18, 0, 16, 0, + 0, 0, 0, 0, 70, 14, + 16, 0, 0, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 50, 32, + 0, 11, 18, 0, 16, 0, + 0, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 58, 128, 32, 0, 0, 0, + 0, 0, 6, 0, 0, 0, + 50, 0, 0, 11, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 10, 128, 32, 0, + 0, 0, 0, 0, 6, 0, + 0, 0, 26, 128, 32, 0, + 0, 0, 0, 0, 6, 0, + 0, 0, 14, 0, 0, 10, + 18, 32, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 63, 0, 0, + 128, 63, 0, 0, 128, 63, + 0, 0, 128, 63, 10, 0, + 16, 0, 0, 0, 0, 0, + 62, 0, 0, 1 +}; + +namespace Generated +{ + void LinearizeDepth_PS::Create(DevicePointer Device) + { + m_Shader[ShaderPermutations::RESOLVE_DEPTH_0].Create(Device, g_LinearizeDepth_PS_RESOLVE_DEPTH_0_D3D11, sizeof(g_LinearizeDepth_PS_RESOLVE_DEPTH_0_D3D11)); + m_Shader[ShaderPermutations::RESOLVE_DEPTH_1].Create(Device, g_LinearizeDepth_PS_RESOLVE_DEPTH_1_D3D11, sizeof(g_LinearizeDepth_PS_RESOLVE_DEPTH_1_D3D11)); + } + + void LinearizeDepth_PS::Release(DevicePointer Device) + { + m_Shader[ShaderPermutations::RESOLVE_DEPTH_0].Release(Device); + m_Shader[ShaderPermutations::RESOLVE_DEPTH_1].Release(Device); + } +} diff --git a/src/shaders/out/d3d11/LinearizeDepth_PS.h b/src/shaders/out/d3d11/LinearizeDepth_PS.h new file mode 100644 index 0000000..5365878 --- /dev/null +++ b/src/shaders/out/d3d11/LinearizeDepth_PS.h @@ -0,0 +1,38 @@ +//! This file was auto-generated. Do not modify manually. +#pragma once + +namespace Generated +{ + +namespace ShaderPermutations +{ + +#ifndef RESOLVE_DEPTH_DEFINED +#define RESOLVE_DEPTH_DEFINED + enum RESOLVE_DEPTH + { + RESOLVE_DEPTH_0, + RESOLVE_DEPTH_1, + RESOLVE_DEPTH_COUNT, + }; +#endif + +}; + +struct LinearizeDepth_PS +{ + void Create(DevicePointer Device); + void Release(DevicePointer Device); + PixelShader& Get(ShaderPermutations::RESOLVE_DEPTH A) + { + return m_Shader[A]; + } + +private: + PixelShader m_Shader[ShaderPermutations::RESOLVE_DEPTH_COUNT]; +#if _WIN32 + static_assert(ShaderPermutations::RESOLVE_DEPTH_COUNT == 2, ""); +#endif +}; + +}; diff --git a/src/shaders/out/d3d11/ReconstructNormal_PS.cpp b/src/shaders/out/d3d11/ReconstructNormal_PS.cpp new file mode 100644 index 0000000..681813a --- /dev/null +++ b/src/shaders/out/d3d11/ReconstructNormal_PS.cpp @@ -0,0 +1,392 @@ +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[3], immediateIndexed +dcl_sampler s0, mode_default +dcl_resource_texture2d (float,float,float,float) t0 +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 5 +mov r0.y, cb0[1].z +mov r0.z, l(0) +add r0.xy, r0.yzyy, v1.xyxx +mad r0.zw, cb0[2].xxxy, r0.xxxy, cb0[2].zzzw +sample_l_indexable(texture2d)(float,float,float,float) r1.x, r0.xyxx, t0.xyzw, s0, l(0.000000) +mul r1.yz, r0.zzwz, r1.xxxx +mad r0.xy, cb0[2].yxyy, v1.yxyy, cb0[2].wzww +sample_l_indexable(texture2d)(float,float,float,float) r2.y, v1.xyxx, t0.yxzw, s0, l(0.000000) +mul r2.xz, r0.xxyx, r2.yyyy +add r0.xyz, r1.xyzx, -r2.yzxy +dp3 r0.w, r0.xyzx, r0.xyzx +mov r1.y, -cb0[1].z +mov r1.z, l(0) +add r1.xy, r1.yzyy, v1.xyxx +mad r1.zw, cb0[2].xxxy, r1.xxxy, cb0[2].zzzw +sample_l_indexable(texture2d)(float,float,float,float) r3.x, r1.xyxx, t0.xyzw, s0, l(0.000000) +mul r3.yz, r1.zzwz, r3.xxxx +add r1.xyz, r2.yzxy, -r3.xyzx +dp3 r1.w, r1.xyzx, r1.xyzx +lt r0.w, r0.w, r1.w +movc r0.xyz, r0.wwww, r0.xyzx, r1.xyzx +mov r1.z, l(0) +mov r1.x, cb0[1].w +add r1.xy, r1.xzxx, v1.yxyy +mad r1.zw, cb0[2].yyyx, r1.xxxy, cb0[2].wwwz +sample_l_indexable(texture2d)(float,float,float,float) r3.y, r1.yxyy, t0.yxzw, s0, l(0.000000) +mul r3.xz, r1.zzwz, r3.yyyy +add r1.xyz, -r2.xyzx, r3.xyzx +dp3 r0.w, r1.xyzx, r1.xyzx +mov r3.z, l(0) +mov r3.x, -cb0[1].w +add r3.xy, r3.xzxx, v1.yxyy +mad r3.zw, cb0[2].yyyx, r3.xxxy, cb0[2].wwwz +sample_l_indexable(texture2d)(float,float,float,float) r4.y, r3.yxyy, t0.yxzw, s0, l(0.000000) +mul r4.xz, r3.zzwz, r4.yyyy +add r2.xyz, r2.xyzx, -r4.xyzx +dp3 r1.w, r2.xyzx, r2.xyzx +lt r0.w, r0.w, r1.w +movc r1.xyz, r0.wwww, r1.xyzx, r2.xyzx +mul r2.xyz, r0.xyzx, r1.xyzx +mad r0.xyz, r0.zxyz, r1.yzxy, -r2.xyzx +dp3 r0.w, r0.xyzx, r0.xyzx +rsq r0.w, r0.w +mul r0.xyz, r0.wwww, r0.xyzx +mad o0.xyz, r0.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) +mov o0.w, l(0) +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_ReconstructNormal_PS_D3D11[] = +{ + 68, 88, 66, 67, 73, 125, + 231, 100, 231, 85, 84, 144, + 134, 18, 83, 86, 30, 16, + 79, 225, 1, 0, 0, 0, + 0, 7, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 3, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 64, 6, 0, 0, + 80, 0, 0, 0, 144, 1, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 90, 0, + 0, 3, 0, 96, 16, 0, + 0, 0, 0, 0, 88, 24, + 0, 4, 0, 112, 16, 0, + 0, 0, 0, 0, 85, 85, + 0, 0, 98, 16, 0, 3, + 50, 16, 16, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 242, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 5, 0, 0, 0, 54, 0, + 0, 6, 34, 0, 16, 0, + 0, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 7, 50, 0, + 16, 0, 0, 0, 0, 0, + 150, 5, 16, 0, 0, 0, + 0, 0, 70, 16, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 0, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 18, 0, 16, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 70, 126, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 1, 0, 0, 0, 166, 11, + 16, 0, 0, 0, 0, 0, + 6, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 11, + 50, 0, 16, 0, 0, 0, + 0, 0, 22, 133, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 22, 21, 16, 0, + 1, 0, 0, 0, 182, 143, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 34, 0, + 16, 0, 2, 0, 0, 0, + 70, 16, 16, 0, 1, 0, + 0, 0, 22, 126, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 82, 0, 16, 0, 2, 0, + 0, 0, 6, 1, 16, 0, + 0, 0, 0, 0, 86, 5, + 16, 0, 2, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 150, 4, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 0, 0, 0, 0, + 54, 0, 0, 7, 34, 0, + 16, 0, 1, 0, 0, 0, + 42, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 7, 50, 0, + 16, 0, 1, 0, 0, 0, + 150, 5, 16, 0, 1, 0, + 0, 0, 70, 16, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 11, 194, 0, 16, 0, + 1, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 1, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 72, 0, 0, 141, 194, 0, + 0, 128, 67, 85, 21, 0, + 18, 0, 16, 0, 3, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 70, 126, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 98, 0, 16, 0, + 3, 0, 0, 0, 166, 11, + 16, 0, 1, 0, 0, 0, + 6, 0, 16, 0, 3, 0, + 0, 0, 0, 0, 0, 8, + 114, 0, 16, 0, 1, 0, + 0, 0, 150, 4, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 49, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 55, 0, 0, 9, 114, 0, + 16, 0, 0, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 66, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 54, 0, 0, 6, + 18, 0, 16, 0, 1, 0, + 0, 0, 58, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 7, + 50, 0, 16, 0, 1, 0, + 0, 0, 134, 0, 16, 0, + 1, 0, 0, 0, 22, 21, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 11, 194, 0, + 16, 0, 1, 0, 0, 0, + 86, 129, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 1, 0, + 0, 0, 246, 139, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 72, 0, 0, 141, + 194, 0, 0, 128, 67, 85, + 21, 0, 34, 0, 16, 0, + 3, 0, 0, 0, 22, 5, + 16, 0, 1, 0, 0, 0, + 22, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 82, 0, + 16, 0, 3, 0, 0, 0, + 166, 11, 16, 0, 1, 0, + 0, 0, 86, 5, 16, 0, + 3, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 54, 0, 0, 7, 18, 0, + 16, 0, 3, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 7, 50, 0, 16, 0, + 3, 0, 0, 0, 134, 0, + 16, 0, 3, 0, 0, 0, + 22, 21, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 11, + 194, 0, 16, 0, 3, 0, + 0, 0, 86, 129, 32, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 6, 4, 16, 0, + 3, 0, 0, 0, 246, 139, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 72, 0, + 0, 141, 194, 0, 0, 128, + 67, 85, 21, 0, 34, 0, + 16, 0, 4, 0, 0, 0, + 22, 5, 16, 0, 3, 0, + 0, 0, 22, 126, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 82, 0, 16, 0, 4, 0, + 0, 0, 166, 11, 16, 0, + 3, 0, 0, 0, 86, 5, + 16, 0, 4, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 4, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 49, 0, 0, 7, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 55, 0, + 0, 9, 114, 0, 16, 0, + 1, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 114, 0, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 10, + 114, 0, 16, 0, 0, 0, + 0, 0, 38, 9, 16, 0, + 0, 0, 0, 0, 150, 4, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 16, 0, 0, 7, 130, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 0, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 114, 0, + 16, 0, 0, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 0, 0, 0, 0, 50, 0, + 0, 15, 114, 32, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 63, 0, 0, + 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 54, 0, + 0, 5, 130, 32, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 62, 0, 0, 1 +}; + +namespace Generated +{ + void ReconstructNormal_PS::Create(DevicePointer Device) + { + m_Shader.Create(Device, g_ReconstructNormal_PS_D3D11, sizeof(g_ReconstructNormal_PS_D3D11)); + } + + void ReconstructNormal_PS::Release(DevicePointer Device) + { + m_Shader.Release(Device); + } +} diff --git a/src/shaders/out/d3d11/ReconstructNormal_PS.h b/src/shaders/out/d3d11/ReconstructNormal_PS.h new file mode 100644 index 0000000..d360ee2 --- /dev/null +++ b/src/shaders/out/d3d11/ReconstructNormal_PS.h @@ -0,0 +1,27 @@ +//! This file was auto-generated. Do not modify manually. +#pragma once + +namespace Generated +{ + +namespace ShaderPermutations +{ + +}; + +struct ReconstructNormal_PS +{ + void Create(DevicePointer Device); + void Release(DevicePointer Device); + PixelShader& Get() + { + return m_Shader; + } + +private: + PixelShader m_Shader; +#if _WIN32 +#endif +}; + +}; diff --git a/src/shaders/out/d3d11/ReinterleaveAO_PS.cpp b/src/shaders/out/d3d11/ReinterleaveAO_PS.cpp new file mode 100644 index 0000000..8dd1578 --- /dev/null +++ b/src/shaders/out/d3d11/ReinterleaveAO_PS.cpp @@ -0,0 +1,303 @@ +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer cb0[8], immediateIndexed +dcl_resource_texture2darray (float,float,float,float) t0 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_output o0.xyzw +dcl_temps 2 +add r0.xy, v0.xyxx, -cb0[7].xyxx +ftoi r0.xy, r0.xyxx +bfi r0.z, l(2), l(2), r0.y, l(0) +bfi r1.z, l(2), l(0), r0.x, r0.z +ishr r1.xy, r0.xyxx, l(2, 2, 0, 0) +mov r1.w, l(0) +ld_indexable(texture2darray)(float,float,float,float) r0.x, r1.xyzw, t0.xyzw +mov_sat r0.x, r0.x +log r0.x, r0.x +mul r0.x, r0.x, cb0[4].z +exp o0.xyzw, r0.xxxx +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_ReinterleaveAO_PS_ENABLE_BLUR_0_D3D11[] = +{ + 68, 88, 66, 67, 50, 64, + 90, 226, 170, 28, 158, 218, + 73, 191, 66, 28, 80, 182, + 224, 122, 1, 0, 0, 0, + 96, 2, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 160, 1, 0, 0, + 80, 0, 0, 0, 104, 0, + 0, 0, 106, 8, 0, 1, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 88, 64, + 0, 4, 0, 112, 16, 0, + 0, 0, 0, 0, 85, 85, + 0, 0, 100, 32, 0, 4, + 50, 16, 16, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 101, 0, 0, 3, 242, 32, + 16, 0, 0, 0, 0, 0, + 104, 0, 0, 2, 2, 0, + 0, 0, 0, 0, 0, 9, + 50, 0, 16, 0, 0, 0, + 0, 0, 70, 16, 16, 0, + 0, 0, 0, 0, 70, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 7, 0, + 0, 0, 27, 0, 0, 5, + 50, 0, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 140, 0, + 0, 11, 66, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 2, 0, 0, 0, + 1, 64, 0, 0, 2, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 140, 0, 0, 11, 66, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 2, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 0, 10, + 50, 0, 16, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 54, 0, 0, 5, 130, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 45, 0, 0, 137, + 2, 2, 0, 128, 67, 85, + 21, 0, 18, 0, 16, 0, + 0, 0, 0, 0, 70, 14, + 16, 0, 1, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 54, 32, 0, 5, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 47, 0, + 0, 5, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 8, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 25, 0, 0, 5, + 242, 32, 16, 0, 0, 0, + 0, 0, 6, 0, 16, 0, + 0, 0, 0, 0, 62, 0, + 0, 1 +}; +#if 0 +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 xy 0 TARGET float xy +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_sampler s0, mode_default +dcl_resource_texture2darray (float,float,float,float) t0 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xy +dcl_temps 2 +ftoi r0.xy, v0.xyxx +bfi r0.z, l(2), l(2), r0.y, l(0) +bfi r1.z, l(2), l(0), r0.x, r0.z +ishr r1.xy, r0.xyxx, l(2, 2, 0, 0) +mov r1.w, l(0) +ld_indexable(texture2darray)(float,float,float,float) r0.x, r1.xyzw, t0.xyzw +mov o0.x, r0.x +sample_indexable(texture2d)(float,float,float,float) r0.x, v1.xyxx, t1.xyzw, s0 +mov o0.y, r0.x +ret +// Approximately 0 instruction slots used +#endif + +const BYTE g_ReinterleaveAO_PS_ENABLE_BLUR_1_D3D11[] = +{ + 68, 88, 66, 67, 78, 212, + 35, 117, 143, 115, 158, 122, + 153, 136, 159, 204, 78, 252, + 224, 241, 1, 0, 0, 0, + 76, 2, 0, 0, 3, 0, + 0, 0, 44, 0, 0, 0, + 132, 0, 0, 0, 184, 0, + 0, 0, 73, 83, 71, 78, + 80, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 3, 0, 0, + 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 3, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 3, 12, 0, 0, 83, 86, + 95, 84, 65, 82, 71, 69, + 84, 0, 171, 171, 83, 72, + 69, 88, 140, 1, 0, 0, + 80, 0, 0, 0, 99, 0, + 0, 0, 106, 8, 0, 1, + 90, 0, 0, 3, 0, 96, + 16, 0, 0, 0, 0, 0, + 88, 64, 0, 4, 0, 112, + 16, 0, 0, 0, 0, 0, + 85, 85, 0, 0, 88, 24, + 0, 4, 0, 112, 16, 0, + 1, 0, 0, 0, 85, 85, + 0, 0, 100, 32, 0, 4, + 50, 16, 16, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 98, 16, 0, 3, 50, 16, + 16, 0, 1, 0, 0, 0, + 101, 0, 0, 3, 50, 32, + 16, 0, 0, 0, 0, 0, + 104, 0, 0, 2, 2, 0, + 0, 0, 27, 0, 0, 5, + 50, 0, 16, 0, 0, 0, + 0, 0, 70, 16, 16, 0, + 0, 0, 0, 0, 140, 0, + 0, 11, 66, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 2, 0, 0, 0, + 1, 64, 0, 0, 2, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 140, 0, 0, 11, 66, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 2, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 0, 10, + 50, 0, 16, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 54, 0, 0, 5, 130, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 45, 0, 0, 137, + 2, 2, 0, 128, 67, 85, + 21, 0, 18, 0, 16, 0, + 0, 0, 0, 0, 70, 14, + 16, 0, 1, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 54, 0, 0, 5, + 18, 32, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 69, 0, + 0, 139, 194, 0, 0, 128, + 67, 85, 21, 0, 18, 0, + 16, 0, 0, 0, 0, 0, + 70, 16, 16, 0, 1, 0, + 0, 0, 70, 126, 16, 0, + 1, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 54, 0, 0, 5, 34, 32, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 62, 0, 0, 1 +}; + +namespace Generated +{ + void ReinterleaveAO_PS::Create(DevicePointer Device) + { + m_Shader[ShaderPermutations::ENABLE_BLUR_0].Create(Device, g_ReinterleaveAO_PS_ENABLE_BLUR_0_D3D11, sizeof(g_ReinterleaveAO_PS_ENABLE_BLUR_0_D3D11)); + m_Shader[ShaderPermutations::ENABLE_BLUR_1].Create(Device, g_ReinterleaveAO_PS_ENABLE_BLUR_1_D3D11, sizeof(g_ReinterleaveAO_PS_ENABLE_BLUR_1_D3D11)); + } + + void ReinterleaveAO_PS::Release(DevicePointer Device) + { + m_Shader[ShaderPermutations::ENABLE_BLUR_0].Release(Device); + m_Shader[ShaderPermutations::ENABLE_BLUR_1].Release(Device); + } +} diff --git a/src/shaders/out/d3d11/ReinterleaveAO_PS.h b/src/shaders/out/d3d11/ReinterleaveAO_PS.h new file mode 100644 index 0000000..1b30ba5 --- /dev/null +++ b/src/shaders/out/d3d11/ReinterleaveAO_PS.h @@ -0,0 +1,38 @@ +//! This file was auto-generated. Do not modify manually. +#pragma once + +namespace Generated +{ + +namespace ShaderPermutations +{ + +#ifndef ENABLE_BLUR_DEFINED +#define ENABLE_BLUR_DEFINED + enum ENABLE_BLUR + { + ENABLE_BLUR_0, + ENABLE_BLUR_1, + ENABLE_BLUR_COUNT, + }; +#endif + +}; + +struct ReinterleaveAO_PS +{ + void Create(DevicePointer Device); + void Release(DevicePointer Device); + PixelShader& Get(ShaderPermutations::ENABLE_BLUR A) + { + return m_Shader[A]; + } + +private: + PixelShader m_Shader[ShaderPermutations::ENABLE_BLUR_COUNT]; +#if _WIN32 + static_assert(ShaderPermutations::ENABLE_BLUR_COUNT == 2, ""); +#endif +}; + +}; diff --git a/src/shaders/out/gl/BlurX_PS.cpp b/src/shaders/out/gl/BlurX_PS.cpp new file mode 100644 index 0000000..f42702c --- /dev/null +++ b/src/shaders/out/gl/BlurX_PS.cpp @@ -0,0 +1,453 @@ +static const char* g_BlurX_PS_ENABLE_SHARPNESS_PROFILE_0_KERNEL_RADIUS_2_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"uniform sampler2D g_t0;\n" +" in vec4 VtxGeoOutput1;\n" +"vec4 Input1;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[4];\n" +"ivec4 Temp_int[4];\n" +"uvec4 Temp_uint[4];\n" +"void main()\n" +"{\n" +" Input1 = VtxGeoOutput1;\n" +" Temp[0].xz = vec4(GlobalConstantBuffer_2.xxxy.zzzz).xz;\n" +" Temp[0].yw = vec4(vec4(0.000000, 0.000000, 0.000000, 2.000000)).yw;\n" +" Temp[1].xy = vec4(Temp[0].xyxx + Input1.xyxx).xy;\n" +" Temp[1].xy = (texture(g_t0, Temp[1].xy)).xy;\n" +" Temp[1].zw = (texture(g_t0, Input1.xy).zwxy).zw;\n" +" Temp[2].x = -Temp[1].w + Temp[1].y;\n" +" Temp[1].y = Temp[1].y + -Temp[2].x;\n" +" Temp[2].y = -Temp[1].w * GlobalConstantBuffer_16;\n" +" Temp[1].y = Temp[1].y * GlobalConstantBuffer_16 + Temp[2].y;\n" +" Temp[1].y = -Temp[1].y * Temp[1].y + -0.222222;\n" +" Temp[1].y = vec4(exp2(Temp[1].y)).y;\n" +" Temp[1].x = Temp[1].y * Temp[1].x + Temp[1].z;\n" +" Temp[1].y = Temp[1].y + 1.000000;\n" +" Temp[3] = vec4(Temp[0].zwzw * vec4(2.000000, 0.000000, -2.000000, -0.000000) + Input1.xyxy);\n" +" Temp[0].xy = vec4(-Temp[0].xyxx + Input1.xyxx).xy;\n" +" Temp[0].xy = (texture(g_t0, Temp[0].xy)).xy;\n" +" Temp[0].zw = (texture(g_t0, Temp[3].xy).zwxy).zw;\n" +" Temp[2].zw = (texture(g_t0, Temp[3].zw).zwxy).zw;\n" +" Temp[0].w = -Temp[2].x * 2.000000 + Temp[0].w;\n" +" Temp[0].w = Temp[0].w * GlobalConstantBuffer_16 + Temp[2].y;\n" +" Temp[0].w = -Temp[0].w * Temp[0].w + -0.888889;\n" +" Temp[0].w = vec4(exp2(Temp[0].w)).w;\n" +" Temp[0].z = Temp[0].w * Temp[0].z + Temp[1].x;\n" +" Temp[0].w = Temp[0].w + Temp[1].y;\n" +" Temp[1].x = -Temp[1].w + Temp[0].y;\n" +" Output0.y = vec4(Temp[1].w).y;\n" +" Temp[0].y = Temp[0].y + -Temp[1].x;\n" +" Temp[1].x = -Temp[1].x * 2.000000 + Temp[2].w;\n" +" Temp[1].x = Temp[1].x * GlobalConstantBuffer_16 + Temp[2].y;\n" +" Temp[0].y = Temp[0].y * GlobalConstantBuffer_16 + Temp[2].y;\n" +" Temp[0].y = -Temp[0].y * Temp[0].y + -0.222222;\n" +" Temp[0].y = vec4(exp2(Temp[0].y)).y;\n" +" Temp[1].x = -Temp[1].x * Temp[1].x + -0.888889;\n" +" Temp[1].x = vec4(exp2(Temp[1].x)).x;\n" +" Temp[0].x = Temp[0].y * Temp[0].x + Temp[0].z;\n" +" Temp[0].y = Temp[0].y + Temp[0].w;\n" +" Temp[0].y = Temp[1].x + Temp[0].y;\n" +" Temp[0].x = Temp[1].x * Temp[2].z + Temp[0].x;\n" +" Output0.x = Temp[0].x / Temp[0].y;\n" +" return;\n" +"}\n" +; +static const char* g_BlurX_PS_ENABLE_SHARPNESS_PROFILE_0_KERNEL_RADIUS_4_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"uniform sampler2D g_t0;\n" +"uniform sampler2D g_t1;\n" +" in vec4 VtxGeoOutput1;\n" +"vec4 Input1;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[5];\n" +"ivec4 Temp_int[5];\n" +"uvec4 Temp_uint[5];\n" +"void main()\n" +"{\n" +" Input1 = VtxGeoOutput1;\n" +" Temp[0].x = vec4(GlobalConstantBuffer_2.xxxy.z).x;\n" +" Temp[0].y = vec4(3.500000).y;\n" +" Temp[0] = vec4(Temp[0].xyxy * vec4(3.500000, 0.000000, -3.500000, -0.000000) + Input1.xyxy);\n" +" Temp[0].xy = (texture(g_t1, Temp[0].xy)).xy;\n" +" Temp[0].zw = (texture(g_t1, Temp[0].zw).zwxy).zw;\n" +" Temp[1].xz = vec4(GlobalConstantBuffer_2.xxxy.zzzz).xz;\n" +" Temp[1].yw = vec4(vec4(0.000000, 0.000000, 0.000000, 2.000000)).yw;\n" +" Temp[2].xy = vec4(Temp[1].xyxx + Input1.xyxx).xy;\n" +" Temp[2].xy = (texture(g_t0, Temp[2].xy)).xy;\n" +" Temp[2].zw = (texture(g_t0, Input1.xy).zwxy).zw;\n" +" Temp[3].x = -Temp[2].w + Temp[2].y;\n" +" Temp[2].y = Temp[2].y + -Temp[3].x;\n" +" Temp[3].y = -Temp[2].w * GlobalConstantBuffer_16;\n" +" Temp[2].y = Temp[2].y * GlobalConstantBuffer_16 + Temp[3].y;\n" +" Temp[2].y = -Temp[2].y * Temp[2].y + -0.080000;\n" +" Temp[2].y = vec4(exp2(Temp[2].y)).y;\n" +" Temp[2].x = Temp[2].y * Temp[2].x + Temp[2].z;\n" +" Temp[2].y = Temp[2].y + 1.000000;\n" +" Temp[4] = vec4(Temp[1].zwzw * vec4(2.000000, 0.000000, -2.000000, -0.000000) + Input1.xyxy);\n" +" Temp[1].xy = vec4(-Temp[1].xyxx + Input1.xyxx).xy;\n" +" Temp[1].xy = (texture(g_t0, Temp[1].xy)).xy;\n" +" Temp[1].zw = (texture(g_t0, Temp[4].xy).zwxy).zw;\n" +" Temp[3].zw = (texture(g_t0, Temp[4].zw).zwxy).zw;\n" +" Temp[1].w = -Temp[3].x * 2.000000 + Temp[1].w;\n" +" Temp[0].y = -Temp[3].x * 3.000000 + Temp[0].y;\n" +" Temp[0].y = Temp[0].y * GlobalConstantBuffer_16 + Temp[3].y;\n" +" Temp[0].y = -Temp[0].y * Temp[0].y + -0.720000;\n" +" Temp[0].y = vec4(exp2(Temp[0].y)).y;\n" +" Temp[1].w = Temp[1].w * GlobalConstantBuffer_16 + Temp[3].y;\n" +" Temp[1].w = -Temp[1].w * Temp[1].w + -0.320000;\n" +" Temp[1].w = vec4(exp2(Temp[1].w)).w;\n" +" Temp[1].z = Temp[1].w * Temp[1].z + Temp[2].x;\n" +" Temp[1].w = Temp[1].w + Temp[2].y;\n" +" Temp[1].w = Temp[0].y + Temp[1].w;\n" +" Temp[0].x = Temp[0].y * Temp[0].x + Temp[1].z;\n" +" Temp[0].y = -Temp[2].w + Temp[1].y;\n" +" Output0.y = vec4(Temp[2].w).y;\n" +" Temp[1].y = -Temp[0].y + Temp[1].y;\n" +" Temp[1].y = Temp[1].y * GlobalConstantBuffer_16 + Temp[3].y;\n" +" Temp[1].y = -Temp[1].y * Temp[1].y + -0.080000;\n" +" Temp[1].y = vec4(exp2(Temp[1].y)).y;\n" +" Temp[0].x = Temp[1].y * Temp[1].x + Temp[0].x;\n" +" Temp[1].x = Temp[1].y + Temp[1].w;\n" +" Temp[1].y = -Temp[0].y * 2.000000 + Temp[3].w;\n" +" Temp[0].y = -Temp[0].y * 3.000000 + Temp[0].w;\n" +" Temp[0].y = Temp[0].y * GlobalConstantBuffer_16 + Temp[3].y;\n" +" Temp[0].w = Temp[1].y * GlobalConstantBuffer_16 + Temp[3].y;\n" +" Temp[0].w = -Temp[0].w * Temp[0].w + -0.320000;\n" +" Temp[0].w = vec4(exp2(Temp[0].w)).w;\n" +" Temp[0].y = -Temp[0].y * Temp[0].y + -0.720000;\n" +" Temp[0].y = vec4(exp2(Temp[0].y)).y;\n" +" Temp[0].x = Temp[0].w * Temp[3].z + Temp[0].x;\n" +" Temp[0].w = Temp[0].w + Temp[1].x;\n" +" Temp[0].w = Temp[0].y + Temp[0].w;\n" +" Temp[0].x = Temp[0].y * Temp[0].z + Temp[0].x;\n" +" Output0.x = Temp[0].x / Temp[0].w;\n" +" return;\n" +"}\n" +; +static const char* g_BlurX_PS_ENABLE_SHARPNESS_PROFILE_1_KERNEL_RADIUS_2_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"uniform sampler2D g_t0;\n" +" in vec4 VtxGeoOutput1;\n" +"vec4 Input1;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[4];\n" +"ivec4 Temp_int[4];\n" +"uvec4 Temp_uint[4];\n" +"void main()\n" +"{\n" +" Input1 = VtxGeoOutput1;\n" +" Temp[0].xz = vec4(GlobalConstantBuffer_2.xxxy.zzzz).xz;\n" +" Temp[0].yw = vec4(vec4(0.000000, 0.000000, 0.000000, 2.000000)).yw;\n" +" Temp[1].xy = vec4(Temp[0].xyxx + Input1.xyxx).xy;\n" +" Temp[1].xy = (texture(g_t0, Temp[1].xy)).xy;\n" +" Temp[1].zw = (texture(g_t0, Input1.xy).zwxy).zw;\n" +" Temp[2].x = -Temp[1].w + Temp[1].y;\n" +" Temp[1].y = Temp[1].y + -Temp[2].x;\n" +" Temp[2].yz = vec4(-GlobalConstantBuffer_13 + GlobalConstantBuffer_14).yz;\n" +" Temp[2].w = Temp[1].w + -GlobalConstantBuffer_13;\n" +" Temp[2].y = Temp[2].w / Temp[2].y;\n" +" Temp[2].y = clamp(Temp[2].y, 0.0, 1.0);\n" +" Temp[2].y = Temp[2].y * Temp[2].z + GlobalConstantBuffer_15;\n" +" Temp[2].z = -Temp[1].w * Temp[2].y;\n" +" Temp[1].y = Temp[1].y * Temp[2].y + Temp[2].z;\n" +" Temp[1].y = -Temp[1].y * Temp[1].y + -0.222222;\n" +" Temp[1].y = vec4(exp2(Temp[1].y)).y;\n" +" Temp[1].x = Temp[1].y * Temp[1].x + Temp[1].z;\n" +" Temp[1].y = Temp[1].y + 1.000000;\n" +" Temp[3] = vec4(Temp[0].zwzw * vec4(2.000000, 0.000000, -2.000000, -0.000000) + Input1.xyxy);\n" +" Temp[0].xy = vec4(-Temp[0].xyxx + Input1.xyxx).xy;\n" +" Temp[0].xy = (texture(g_t0, Temp[0].xy)).xy;\n" +" Temp[0].zw = (texture(g_t0, Temp[3].xy).zwxy).zw;\n" +" Temp[3].xy = (texture(g_t0, Temp[3].zw)).xy;\n" +" Temp[0].w = -Temp[2].x * 2.000000 + Temp[0].w;\n" +" Temp[0].w = Temp[0].w * Temp[2].y + Temp[2].z;\n" +" Temp[0].w = -Temp[0].w * Temp[0].w + -0.888889;\n" +" Temp[0].w = vec4(exp2(Temp[0].w)).w;\n" +" Temp[0].z = Temp[0].w * Temp[0].z + Temp[1].x;\n" +" Temp[0].w = Temp[0].w + Temp[1].y;\n" +" Temp[1].x = -Temp[1].w + Temp[0].y;\n" +" Output0.y = vec4(Temp[1].w).y;\n" +" Temp[0].y = Temp[0].y + -Temp[1].x;\n" +" Temp[1].x = -Temp[1].x * 2.000000 + Temp[3].y;\n" +" Temp[1].x = Temp[1].x * Temp[2].y + Temp[2].z;\n" +" Temp[0].y = Temp[0].y * Temp[2].y + Temp[2].z;\n" +" Temp[0].y = -Temp[0].y * Temp[0].y + -0.222222;\n" +" Temp[0].y = vec4(exp2(Temp[0].y)).y;\n" +" Temp[1].x = -Temp[1].x * Temp[1].x + -0.888889;\n" +" Temp[1].x = vec4(exp2(Temp[1].x)).x;\n" +" Temp[0].x = Temp[0].y * Temp[0].x + Temp[0].z;\n" +" Temp[0].y = Temp[0].y + Temp[0].w;\n" +" Temp[0].y = Temp[1].x + Temp[0].y;\n" +" Temp[0].x = Temp[1].x * Temp[3].x + Temp[0].x;\n" +" Output0.x = Temp[0].x / Temp[0].y;\n" +" return;\n" +"}\n" +; +static const char* g_BlurX_PS_ENABLE_SHARPNESS_PROFILE_1_KERNEL_RADIUS_4_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"uniform sampler2D g_t0;\n" +"uniform sampler2D g_t1;\n" +" in vec4 VtxGeoOutput1;\n" +"vec4 Input1;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[5];\n" +"ivec4 Temp_int[5];\n" +"uvec4 Temp_uint[5];\n" +"void main()\n" +"{\n" +" Input1 = VtxGeoOutput1;\n" +" Temp[0].x = vec4(GlobalConstantBuffer_2.xxxy.z).x;\n" +" Temp[0].y = vec4(3.500000).y;\n" +" Temp[0] = vec4(Temp[0].xyxy * vec4(3.500000, 0.000000, -3.500000, -0.000000) + Input1.xyxy);\n" +" Temp[0].xy = (texture(g_t1, Temp[0].xy)).xy;\n" +" Temp[0].zw = (texture(g_t1, Temp[0].zw).zwxy).zw;\n" +" Temp[1].xz = vec4(GlobalConstantBuffer_2.xxxy.zzzz).xz;\n" +" Temp[1].yw = vec4(vec4(0.000000, 0.000000, 0.000000, 2.000000)).yw;\n" +" Temp[2].xy = vec4(Temp[1].xyxx + Input1.xyxx).xy;\n" +" Temp[2].xy = (texture(g_t0, Temp[2].xy)).xy;\n" +" Temp[2].zw = (texture(g_t0, Input1.xy).zwxy).zw;\n" +" Temp[3].x = -Temp[2].w + Temp[2].y;\n" +" Temp[2].y = Temp[2].y + -Temp[3].x;\n" +" Temp[3].yz = vec4(-GlobalConstantBuffer_13 + GlobalConstantBuffer_14).yz;\n" +" Temp[3].w = Temp[2].w + -GlobalConstantBuffer_13;\n" +" Temp[3].y = Temp[3].w / Temp[3].y;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * Temp[3].z + GlobalConstantBuffer_15;\n" +" Temp[3].z = -Temp[2].w * Temp[3].y;\n" +" Temp[2].y = Temp[2].y * Temp[3].y + Temp[3].z;\n" +" Temp[2].y = -Temp[2].y * Temp[2].y + -0.080000;\n" +" Temp[2].y = vec4(exp2(Temp[2].y)).y;\n" +" Temp[2].x = Temp[2].y * Temp[2].x + Temp[2].z;\n" +" Temp[2].y = Temp[2].y + 1.000000;\n" +" Temp[4] = vec4(Temp[1].zwzw * vec4(2.000000, 0.000000, -2.000000, -0.000000) + Input1.xyxy);\n" +" Temp[1].xy = vec4(-Temp[1].xyxx + Input1.xyxx).xy;\n" +" Temp[1].xy = (texture(g_t0, Temp[1].xy)).xy;\n" +" Temp[1].zw = (texture(g_t0, Temp[4].xy).zwxy).zw;\n" +" Temp[4].xy = (texture(g_t0, Temp[4].zw)).xy;\n" +" Temp[1].w = -Temp[3].x * 2.000000 + Temp[1].w;\n" +" Temp[0].y = -Temp[3].x * 3.000000 + Temp[0].y;\n" +" Temp[0].y = Temp[0].y * Temp[3].y + Temp[3].z;\n" +" Temp[0].y = -Temp[0].y * Temp[0].y + -0.720000;\n" +" Temp[0].y = vec4(exp2(Temp[0].y)).y;\n" +" Temp[1].w = Temp[1].w * Temp[3].y + Temp[3].z;\n" +" Temp[1].w = -Temp[1].w * Temp[1].w + -0.320000;\n" +" Temp[1].w = vec4(exp2(Temp[1].w)).w;\n" +" Temp[1].z = Temp[1].w * Temp[1].z + Temp[2].x;\n" +" Temp[1].w = Temp[1].w + Temp[2].y;\n" +" Temp[1].w = Temp[0].y + Temp[1].w;\n" +" Temp[0].x = Temp[0].y * Temp[0].x + Temp[1].z;\n" +" Temp[0].y = -Temp[2].w + Temp[1].y;\n" +" Output0.y = vec4(Temp[2].w).y;\n" +" Temp[1].y = -Temp[0].y + Temp[1].y;\n" +" Temp[1].y = Temp[1].y * Temp[3].y + Temp[3].z;\n" +" Temp[1].y = -Temp[1].y * Temp[1].y + -0.080000;\n" +" Temp[1].y = vec4(exp2(Temp[1].y)).y;\n" +" Temp[0].x = Temp[1].y * Temp[1].x + Temp[0].x;\n" +" Temp[1].x = Temp[1].y + Temp[1].w;\n" +" Temp[1].y = -Temp[0].y * 2.000000 + Temp[4].y;\n" +" Temp[0].y = -Temp[0].y * 3.000000 + Temp[0].w;\n" +" Temp[0].y = Temp[0].y * Temp[3].y + Temp[3].z;\n" +" Temp[0].w = Temp[1].y * Temp[3].y + Temp[3].z;\n" +" Temp[0].w = -Temp[0].w * Temp[0].w + -0.320000;\n" +" Temp[0].w = vec4(exp2(Temp[0].w)).w;\n" +" Temp[0].y = -Temp[0].y * Temp[0].y + -0.720000;\n" +" Temp[0].y = vec4(exp2(Temp[0].y)).y;\n" +" Temp[0].x = Temp[0].w * Temp[4].x + Temp[0].x;\n" +" Temp[0].w = Temp[0].w + Temp[1].x;\n" +" Temp[0].w = Temp[0].y + Temp[0].w;\n" +" Temp[0].x = Temp[0].y * Temp[0].z + Temp[0].x;\n" +" Output0.x = Temp[0].x / Temp[0].w;\n" +" return;\n" +"}\n" +; + +namespace Generated +{ + void BlurX_PS::Create(DevicePointer Device) + { + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_0][ShaderPermutations::KERNEL_RADIUS_2].Create(Device, g_BlurX_PS_ENABLE_SHARPNESS_PROFILE_0_KERNEL_RADIUS_2_GL, sizeof(g_BlurX_PS_ENABLE_SHARPNESS_PROFILE_0_KERNEL_RADIUS_2_GL)); + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_0][ShaderPermutations::KERNEL_RADIUS_4].Create(Device, g_BlurX_PS_ENABLE_SHARPNESS_PROFILE_0_KERNEL_RADIUS_4_GL, sizeof(g_BlurX_PS_ENABLE_SHARPNESS_PROFILE_0_KERNEL_RADIUS_4_GL)); + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_1][ShaderPermutations::KERNEL_RADIUS_2].Create(Device, g_BlurX_PS_ENABLE_SHARPNESS_PROFILE_1_KERNEL_RADIUS_2_GL, sizeof(g_BlurX_PS_ENABLE_SHARPNESS_PROFILE_1_KERNEL_RADIUS_2_GL)); + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_1][ShaderPermutations::KERNEL_RADIUS_4].Create(Device, g_BlurX_PS_ENABLE_SHARPNESS_PROFILE_1_KERNEL_RADIUS_4_GL, sizeof(g_BlurX_PS_ENABLE_SHARPNESS_PROFILE_1_KERNEL_RADIUS_4_GL)); + } + + void BlurX_PS::Release(DevicePointer Device) + { + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_0][ShaderPermutations::KERNEL_RADIUS_2].Release(Device); + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_0][ShaderPermutations::KERNEL_RADIUS_4].Release(Device); + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_1][ShaderPermutations::KERNEL_RADIUS_2].Release(Device); + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_1][ShaderPermutations::KERNEL_RADIUS_4].Release(Device); + } +} diff --git a/src/shaders/out/gl/BlurX_PS.h b/src/shaders/out/gl/BlurX_PS.h new file mode 100644 index 0000000..e8327ba --- /dev/null +++ b/src/shaders/out/gl/BlurX_PS.h @@ -0,0 +1,49 @@ +//! This file was auto-generated. Do not modify manually. +#pragma once + +namespace Generated +{ + +namespace ShaderPermutations +{ + +#ifndef ENABLE_SHARPNESS_PROFILE_DEFINED +#define ENABLE_SHARPNESS_PROFILE_DEFINED + enum ENABLE_SHARPNESS_PROFILE + { + ENABLE_SHARPNESS_PROFILE_0, + ENABLE_SHARPNESS_PROFILE_1, + ENABLE_SHARPNESS_PROFILE_COUNT, + }; +#endif + +#ifndef KERNEL_RADIUS_DEFINED +#define KERNEL_RADIUS_DEFINED + enum KERNEL_RADIUS + { + KERNEL_RADIUS_2, + KERNEL_RADIUS_4, + KERNEL_RADIUS_COUNT, + }; +#endif + +}; + +struct BlurX_PS +{ + void Create(DevicePointer Device); + void Release(DevicePointer Device); + GLSLPrograms::BlurX_PS& Get(ShaderPermutations::ENABLE_SHARPNESS_PROFILE A, ShaderPermutations::KERNEL_RADIUS B) + { + return m_Shader[A][B]; + } + +private: + GLSLPrograms::BlurX_PS m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_COUNT][ShaderPermutations::KERNEL_RADIUS_COUNT]; +#if _WIN32 + static_assert(ShaderPermutations::ENABLE_SHARPNESS_PROFILE_COUNT == 2, ""); + static_assert(ShaderPermutations::KERNEL_RADIUS_COUNT == 2, ""); +#endif +}; + +}; diff --git a/src/shaders/out/gl/BlurY_PS.cpp b/src/shaders/out/gl/BlurY_PS.cpp new file mode 100644 index 0000000..a11e0b6 --- /dev/null +++ b/src/shaders/out/gl/BlurY_PS.cpp @@ -0,0 +1,465 @@ +static const char* g_BlurY_PS_ENABLE_SHARPNESS_PROFILE_0_KERNEL_RADIUS_2_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"uniform sampler2D g_t0;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[3];\n" +"ivec4 Temp_int[3];\n" +"uvec4 Temp_uint[3];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(Input0.xyxx + -GlobalConstantBuffer_21.xyxx.xyxx).xy;\n" +" Temp[1].xz = vec4(vec4(0.000000, 0.000000, -0.000000, 0.000000)).xz;\n" +" Temp[1].yw = vec4(GlobalConstantBuffer_2.xxxy.wwww).yw;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_2.xxxy.zzzw + Temp[1].xxxy).zw;\n" +" Temp[0].zw = (texture(g_t0, Temp[0].zw).zwxy).zw;\n" +" Temp[2].xy = vec4(Temp[0].xyxx * GlobalConstantBuffer_2.xxxy.zwzz).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * GlobalConstantBuffer_2.xxxy.zwzz + -Temp[1].xyxx).xy;\n" +" Temp[1] = vec4(vec4(2.000000, 2.000000, 2.000000, -2.000000) * Temp[1] + Temp[2].xyxy);\n" +" Temp[2].xy = (texture(g_t0, Temp[2].xy)).xy;\n" +" Temp[0].xy = (texture(g_t0, Temp[0].xy)).xy;\n" +" Temp[2].z = Temp[0].w + -Temp[2].y;\n" +" Temp[0].w = Temp[0].w + -Temp[2].z;\n" +" Temp[2].w = -Temp[2].y * GlobalConstantBuffer_16;\n" +" Temp[0].w = Temp[0].w * GlobalConstantBuffer_16 + Temp[2].w;\n" +" Temp[0].w = -Temp[0].w * Temp[0].w + -0.222222;\n" +" Temp[0].w = vec4(exp2(Temp[0].w)).w;\n" +" Temp[0].z = Temp[0].w * Temp[0].z + Temp[2].x;\n" +" Temp[0].w = Temp[0].w + 1.000000;\n" +" Temp[2].x = -Temp[2].y + Temp[0].y;\n" +" Temp[1].xy = (texture(g_t0, Temp[1].xy)).xy;\n" +" Temp[1].zw = (texture(g_t0, Temp[1].zw).zwxy).zw;\n" +" Temp[1].y = -Temp[2].z * 2.000000 + Temp[1].y;\n" +" Temp[1].y = Temp[1].y * GlobalConstantBuffer_16 + Temp[2].w;\n" +" Temp[1].y = -Temp[1].y * Temp[1].y + -0.888889;\n" +" Temp[1].y = vec4(exp2(Temp[1].y)).y;\n" +" Temp[0].z = Temp[1].y * Temp[1].x + Temp[0].z;\n" +" Temp[0].w = Temp[0].w + Temp[1].y;\n" +" Temp[0].y = Temp[0].y + -Temp[2].x;\n" +" Temp[1].x = -Temp[2].x * 2.000000 + Temp[1].w;\n" +" Temp[1].x = Temp[1].x * GlobalConstantBuffer_16 + Temp[2].w;\n" +" Temp[0].y = Temp[0].y * GlobalConstantBuffer_16 + Temp[2].w;\n" +" Temp[0].y = -Temp[0].y * Temp[0].y + -0.222222;\n" +" Temp[0].y = vec4(exp2(Temp[0].y)).y;\n" +" Temp[1].x = -Temp[1].x * Temp[1].x + -0.888889;\n" +" Temp[1].x = vec4(exp2(Temp[1].x)).x;\n" +" Temp[0].x = Temp[0].y * Temp[0].x + Temp[0].z;\n" +" Temp[0].y = Temp[0].y + Temp[0].w;\n" +" Temp[0].y = Temp[1].x + Temp[0].y;\n" +" Temp[0].x = Temp[1].x * Temp[1].z + Temp[0].x;\n" +" Temp[0].x = Temp[0].x / Temp[0].y;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].x = vec4(log2(Temp[0].x)).x;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_11;\n" +" Output0 = vec4(exp2(Temp[0].xxxx));\n" +" return;\n" +"}\n" +; +static const char* g_BlurY_PS_ENABLE_SHARPNESS_PROFILE_0_KERNEL_RADIUS_4_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"uniform sampler2D g_t0;\n" +"uniform sampler2D g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[5];\n" +"ivec4 Temp_int[5];\n" +"uvec4 Temp_uint[5];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(Input0.xyxx + -GlobalConstantBuffer_21.xyxx.xyxx).xy;\n" +" Temp[1].xz = vec4(vec4(0.000000, 0.000000, -0.000000, 0.000000)).xz;\n" +" Temp[1].yw = vec4(GlobalConstantBuffer_2.xxxy.wwww).yw;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_2.xxxy.zzzw + Temp[1].xxxy).zw;\n" +" Temp[0].zw = (texture(g_t0, Temp[0].zw).zwxy).zw;\n" +" Temp[2].xy = vec4(Temp[0].xyxx * GlobalConstantBuffer_2.xxxy.zwzz).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * GlobalConstantBuffer_2.xxxy.zwzz + -Temp[1].xyxx).xy;\n" +" Temp[0].xy = (texture(g_t0, Temp[0].xy)).xy;\n" +" Temp[2].zw = (texture(g_t0, Temp[2].xy).zwxy).zw;\n" +" Temp[3].x = Temp[0].w + -Temp[2].w;\n" +" Temp[0].w = Temp[0].w + -Temp[3].x;\n" +" Temp[3].y = -Temp[2].w * GlobalConstantBuffer_16;\n" +" Temp[0].w = Temp[0].w * GlobalConstantBuffer_16 + Temp[3].y;\n" +" Temp[0].w = -Temp[0].w * Temp[0].w + -0.080000;\n" +" Temp[0].w = vec4(exp2(Temp[0].w)).w;\n" +" Temp[0].z = Temp[0].w * Temp[0].z + Temp[2].z;\n" +" Temp[0].w = Temp[0].w + 1.000000;\n" +" Temp[2].z = Temp[0].y + -Temp[2].w;\n" +" Temp[4] = vec4(vec4(2.000000, 2.000000, 3.500000, 3.500000) * Temp[1].xyxy + Temp[2].xyxy);\n" +" Temp[1] = vec4(vec4(2.000000, -2.000000, 3.500000, -3.500000) * Temp[1].zwzw + Temp[2].xyxy);\n" +" Temp[2].xy = (texture(g_t0, Temp[4].xy)).xy;\n" +" Temp[3].zw = (texture(g_t1, Temp[4].zw).zwxy).zw;\n" +" Temp[2].y = -Temp[3].x * 2.000000 + Temp[2].y;\n" +" Temp[2].w = -Temp[3].x * 3.000000 + Temp[3].w;\n" +" Temp[2].w = Temp[2].w * GlobalConstantBuffer_16 + Temp[3].y;\n" +" Temp[2].w = -Temp[2].w * Temp[2].w + -0.720000;\n" +" Temp[2].w = vec4(exp2(Temp[2].w)).w;\n" +" Temp[2].y = Temp[2].y * GlobalConstantBuffer_16 + Temp[3].y;\n" +" Temp[2].y = -Temp[2].y * Temp[2].y + -0.320000;\n" +" Temp[2].y = vec4(exp2(Temp[2].y)).y;\n" +" Temp[0].z = Temp[2].y * Temp[2].x + Temp[0].z;\n" +" Temp[0].w = Temp[0].w + Temp[2].y;\n" +" Temp[0].w = Temp[2].w + Temp[0].w;\n" +" Temp[0].z = Temp[2].w * Temp[3].z + Temp[0].z;\n" +" Temp[0].y = Temp[0].y + -Temp[2].z;\n" +" Temp[0].y = Temp[0].y * GlobalConstantBuffer_16 + Temp[3].y;\n" +" Temp[0].y = -Temp[0].y * Temp[0].y + -0.080000;\n" +" Temp[0].y = vec4(exp2(Temp[0].y)).y;\n" +" Temp[0].x = Temp[0].y * Temp[0].x + Temp[0].z;\n" +" Temp[0].y = Temp[0].y + Temp[0].w;\n" +" Temp[0].zw = (texture(g_t0, Temp[1].xy).zwxy).zw;\n" +" Temp[1].xy = (texture(g_t1, Temp[1].zw)).xy;\n" +" Temp[0].w = -Temp[2].z * 2.000000 + Temp[0].w;\n" +" Temp[1].y = -Temp[2].z * 3.000000 + Temp[1].y;\n" +" Temp[1].y = Temp[1].y * GlobalConstantBuffer_16 + Temp[3].y;\n" +" Temp[0].w = Temp[0].w * GlobalConstantBuffer_16 + Temp[3].y;\n" +" Temp[0].w = -Temp[0].w * Temp[0].w + -0.320000;\n" +" Temp[0].w = vec4(exp2(Temp[0].w)).w;\n" +" Temp[1].y = -Temp[1].y * Temp[1].y + -0.720000;\n" +" Temp[1].y = vec4(exp2(Temp[1].y)).y;\n" +" Temp[0].x = Temp[0].w * Temp[0].z + Temp[0].x;\n" +" Temp[0].y = Temp[0].w + Temp[0].y;\n" +" Temp[0].y = Temp[1].y + Temp[0].y;\n" +" Temp[0].x = Temp[1].y * Temp[1].x + Temp[0].x;\n" +" Temp[0].x = Temp[0].x / Temp[0].y;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].x = vec4(log2(Temp[0].x)).x;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_11;\n" +" Output0 = vec4(exp2(Temp[0].xxxx));\n" +" return;\n" +"}\n" +; +static const char* g_BlurY_PS_ENABLE_SHARPNESS_PROFILE_1_KERNEL_RADIUS_2_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"uniform sampler2D g_t0;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[4];\n" +"ivec4 Temp_int[4];\n" +"uvec4 Temp_uint[4];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(Input0.xyxx + -GlobalConstantBuffer_21.xyxx.xyxx).xy;\n" +" Temp[1].xz = vec4(vec4(0.000000, 0.000000, -0.000000, 0.000000)).xz;\n" +" Temp[1].yw = vec4(GlobalConstantBuffer_2.xxxy.wwww).yw;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_2.xxxy.zzzw + Temp[1].xxxy).zw;\n" +" Temp[0].zw = (texture(g_t0, Temp[0].zw).zwxy).zw;\n" +" Temp[2].xy = vec4(Temp[0].xyxx * GlobalConstantBuffer_2.xxxy.zwzz).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * GlobalConstantBuffer_2.xxxy.zwzz + -Temp[1].xyxx).xy;\n" +" Temp[1] = vec4(vec4(2.000000, 2.000000, 2.000000, -2.000000) * Temp[1] + Temp[2].xyxy);\n" +" Temp[2].xy = (texture(g_t0, Temp[2].xy)).xy;\n" +" Temp[0].xy = (texture(g_t0, Temp[0].xy)).xy;\n" +" Temp[2].z = Temp[0].w + -Temp[2].y;\n" +" Temp[0].w = Temp[0].w + -Temp[2].z;\n" +" Temp[2].w = Temp[2].y + -GlobalConstantBuffer_13;\n" +" Temp[3].xy = vec4(-GlobalConstantBuffer_13 + GlobalConstantBuffer_14).xy;\n" +" Temp[2].w = Temp[2].w / Temp[3].x;\n" +" Temp[2].w = clamp(Temp[2].w, 0.0, 1.0);\n" +" Temp[2].w = Temp[2].w * Temp[3].y + GlobalConstantBuffer_15;\n" +" Temp[3].x = Temp[2].w * -Temp[2].y;\n" +" Temp[0].w = Temp[0].w * Temp[2].w + Temp[3].x;\n" +" Temp[0].w = -Temp[0].w * Temp[0].w + -0.222222;\n" +" Temp[0].w = vec4(exp2(Temp[0].w)).w;\n" +" Temp[0].z = Temp[0].w * Temp[0].z + Temp[2].x;\n" +" Temp[0].w = Temp[0].w + 1.000000;\n" +" Temp[2].x = -Temp[2].y + Temp[0].y;\n" +" Temp[1].xy = (texture(g_t0, Temp[1].xy)).xy;\n" +" Temp[1].zw = (texture(g_t0, Temp[1].zw).zwxy).zw;\n" +" Temp[1].y = -Temp[2].z * 2.000000 + Temp[1].y;\n" +" Temp[1].y = Temp[1].y * Temp[2].w + Temp[3].x;\n" +" Temp[1].y = -Temp[1].y * Temp[1].y + -0.888889;\n" +" Temp[1].y = vec4(exp2(Temp[1].y)).y;\n" +" Temp[0].z = Temp[1].y * Temp[1].x + Temp[0].z;\n" +" Temp[0].w = Temp[0].w + Temp[1].y;\n" +" Temp[0].y = Temp[0].y + -Temp[2].x;\n" +" Temp[1].x = -Temp[2].x * 2.000000 + Temp[1].w;\n" +" Temp[1].x = Temp[1].x * Temp[2].w + Temp[3].x;\n" +" Temp[0].y = Temp[0].y * Temp[2].w + Temp[3].x;\n" +" Temp[0].y = -Temp[0].y * Temp[0].y + -0.222222;\n" +" Temp[0].y = vec4(exp2(Temp[0].y)).y;\n" +" Temp[1].x = -Temp[1].x * Temp[1].x + -0.888889;\n" +" Temp[1].x = vec4(exp2(Temp[1].x)).x;\n" +" Temp[0].x = Temp[0].y * Temp[0].x + Temp[0].z;\n" +" Temp[0].y = Temp[0].y + Temp[0].w;\n" +" Temp[0].y = Temp[1].x + Temp[0].y;\n" +" Temp[0].x = Temp[1].x * Temp[1].z + Temp[0].x;\n" +" Temp[0].x = Temp[0].x / Temp[0].y;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].x = vec4(log2(Temp[0].x)).x;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_11;\n" +" Output0 = vec4(exp2(Temp[0].xxxx));\n" +" return;\n" +"}\n" +; +static const char* g_BlurY_PS_ENABLE_SHARPNESS_PROFILE_1_KERNEL_RADIUS_4_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"uniform sampler2D g_t0;\n" +"uniform sampler2D g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[5];\n" +"ivec4 Temp_int[5];\n" +"uvec4 Temp_uint[5];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(Input0.xyxx + -GlobalConstantBuffer_21.xyxx.xyxx).xy;\n" +" Temp[1].xz = vec4(vec4(0.000000, 0.000000, -0.000000, 0.000000)).xz;\n" +" Temp[1].yw = vec4(GlobalConstantBuffer_2.xxxy.wwww).yw;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_2.xxxy.zzzw + Temp[1].xxxy).zw;\n" +" Temp[0].zw = (texture(g_t0, Temp[0].zw).zwxy).zw;\n" +" Temp[2].xy = vec4(Temp[0].xyxx * GlobalConstantBuffer_2.xxxy.zwzz).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * GlobalConstantBuffer_2.xxxy.zwzz + -Temp[1].xyxx).xy;\n" +" Temp[0].xy = (texture(g_t0, Temp[0].xy)).xy;\n" +" Temp[2].zw = (texture(g_t0, Temp[2].xy).zwxy).zw;\n" +" Temp[3].x = Temp[0].w + -Temp[2].w;\n" +" Temp[0].w = Temp[0].w + -Temp[3].x;\n" +" Temp[3].y = Temp[2].w + -GlobalConstantBuffer_13;\n" +" Temp[3].zw = vec4(-GlobalConstantBuffer_13 + GlobalConstantBuffer_14).zw;\n" +" Temp[3].y = Temp[3].y / Temp[3].z;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * Temp[3].w + GlobalConstantBuffer_15;\n" +" Temp[3].z = -Temp[2].w * Temp[3].y;\n" +" Temp[0].w = Temp[0].w * Temp[3].y + Temp[3].z;\n" +" Temp[0].w = -Temp[0].w * Temp[0].w + -0.080000;\n" +" Temp[0].w = vec4(exp2(Temp[0].w)).w;\n" +" Temp[0].z = Temp[0].w * Temp[0].z + Temp[2].z;\n" +" Temp[0].w = Temp[0].w + 1.000000;\n" +" Temp[2].z = Temp[0].y + -Temp[2].w;\n" +" Temp[4] = vec4(vec4(2.000000, 2.000000, 3.500000, 3.500000) * Temp[1].xyxy + Temp[2].xyxy);\n" +" Temp[1] = vec4(vec4(2.000000, -2.000000, 3.500000, -3.500000) * Temp[1].zwzw + Temp[2].xyxy);\n" +" Temp[2].xy = (texture(g_t0, Temp[4].xy)).xy;\n" +" Temp[4].xy = (texture(g_t1, Temp[4].zw)).xy;\n" +" Temp[2].y = -Temp[3].x * 2.000000 + Temp[2].y;\n" +" Temp[2].w = -Temp[3].x * 3.000000 + Temp[4].y;\n" +" Temp[2].w = Temp[2].w * Temp[3].y + Temp[3].z;\n" +" Temp[2].w = -Temp[2].w * Temp[2].w + -0.720000;\n" +" Temp[2].w = vec4(exp2(Temp[2].w)).w;\n" +" Temp[2].y = Temp[2].y * Temp[3].y + Temp[3].z;\n" +" Temp[2].y = -Temp[2].y * Temp[2].y + -0.320000;\n" +" Temp[2].y = vec4(exp2(Temp[2].y)).y;\n" +" Temp[0].z = Temp[2].y * Temp[2].x + Temp[0].z;\n" +" Temp[0].w = Temp[0].w + Temp[2].y;\n" +" Temp[0].w = Temp[2].w + Temp[0].w;\n" +" Temp[0].z = Temp[2].w * Temp[4].x + Temp[0].z;\n" +" Temp[0].y = Temp[0].y + -Temp[2].z;\n" +" Temp[0].y = Temp[0].y * Temp[3].y + Temp[3].z;\n" +" Temp[0].y = -Temp[0].y * Temp[0].y + -0.080000;\n" +" Temp[0].y = vec4(exp2(Temp[0].y)).y;\n" +" Temp[0].x = Temp[0].y * Temp[0].x + Temp[0].z;\n" +" Temp[0].y = Temp[0].y + Temp[0].w;\n" +" Temp[0].zw = (texture(g_t0, Temp[1].xy).zwxy).zw;\n" +" Temp[1].xy = (texture(g_t1, Temp[1].zw)).xy;\n" +" Temp[0].w = -Temp[2].z * 2.000000 + Temp[0].w;\n" +" Temp[1].y = -Temp[2].z * 3.000000 + Temp[1].y;\n" +" Temp[1].y = Temp[1].y * Temp[3].y + Temp[3].z;\n" +" Temp[0].w = Temp[0].w * Temp[3].y + Temp[3].z;\n" +" Temp[0].w = -Temp[0].w * Temp[0].w + -0.320000;\n" +" Temp[0].w = vec4(exp2(Temp[0].w)).w;\n" +" Temp[1].y = -Temp[1].y * Temp[1].y + -0.720000;\n" +" Temp[1].y = vec4(exp2(Temp[1].y)).y;\n" +" Temp[0].x = Temp[0].w * Temp[0].z + Temp[0].x;\n" +" Temp[0].y = Temp[0].w + Temp[0].y;\n" +" Temp[0].y = Temp[1].y + Temp[0].y;\n" +" Temp[0].x = Temp[1].y * Temp[1].x + Temp[0].x;\n" +" Temp[0].x = Temp[0].x / Temp[0].y;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].x = vec4(log2(Temp[0].x)).x;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_11;\n" +" Output0 = vec4(exp2(Temp[0].xxxx));\n" +" return;\n" +"}\n" +; + +namespace Generated +{ + void BlurY_PS::Create(DevicePointer Device) + { + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_0][ShaderPermutations::KERNEL_RADIUS_2].Create(Device, g_BlurY_PS_ENABLE_SHARPNESS_PROFILE_0_KERNEL_RADIUS_2_GL, sizeof(g_BlurY_PS_ENABLE_SHARPNESS_PROFILE_0_KERNEL_RADIUS_2_GL)); + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_0][ShaderPermutations::KERNEL_RADIUS_4].Create(Device, g_BlurY_PS_ENABLE_SHARPNESS_PROFILE_0_KERNEL_RADIUS_4_GL, sizeof(g_BlurY_PS_ENABLE_SHARPNESS_PROFILE_0_KERNEL_RADIUS_4_GL)); + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_1][ShaderPermutations::KERNEL_RADIUS_2].Create(Device, g_BlurY_PS_ENABLE_SHARPNESS_PROFILE_1_KERNEL_RADIUS_2_GL, sizeof(g_BlurY_PS_ENABLE_SHARPNESS_PROFILE_1_KERNEL_RADIUS_2_GL)); + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_1][ShaderPermutations::KERNEL_RADIUS_4].Create(Device, g_BlurY_PS_ENABLE_SHARPNESS_PROFILE_1_KERNEL_RADIUS_4_GL, sizeof(g_BlurY_PS_ENABLE_SHARPNESS_PROFILE_1_KERNEL_RADIUS_4_GL)); + } + + void BlurY_PS::Release(DevicePointer Device) + { + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_0][ShaderPermutations::KERNEL_RADIUS_2].Release(Device); + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_0][ShaderPermutations::KERNEL_RADIUS_4].Release(Device); + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_1][ShaderPermutations::KERNEL_RADIUS_2].Release(Device); + m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_1][ShaderPermutations::KERNEL_RADIUS_4].Release(Device); + } +} diff --git a/src/shaders/out/gl/BlurY_PS.h b/src/shaders/out/gl/BlurY_PS.h new file mode 100644 index 0000000..7dc0d0e --- /dev/null +++ b/src/shaders/out/gl/BlurY_PS.h @@ -0,0 +1,49 @@ +//! This file was auto-generated. Do not modify manually. +#pragma once + +namespace Generated +{ + +namespace ShaderPermutations +{ + +#ifndef ENABLE_SHARPNESS_PROFILE_DEFINED +#define ENABLE_SHARPNESS_PROFILE_DEFINED + enum ENABLE_SHARPNESS_PROFILE + { + ENABLE_SHARPNESS_PROFILE_0, + ENABLE_SHARPNESS_PROFILE_1, + ENABLE_SHARPNESS_PROFILE_COUNT, + }; +#endif + +#ifndef KERNEL_RADIUS_DEFINED +#define KERNEL_RADIUS_DEFINED + enum KERNEL_RADIUS + { + KERNEL_RADIUS_2, + KERNEL_RADIUS_4, + KERNEL_RADIUS_COUNT, + }; +#endif + +}; + +struct BlurY_PS +{ + void Create(DevicePointer Device); + void Release(DevicePointer Device); + GLSLPrograms::BlurY_PS& Get(ShaderPermutations::ENABLE_SHARPNESS_PROFILE A, ShaderPermutations::KERNEL_RADIUS B) + { + return m_Shader[A][B]; + } + +private: + GLSLPrograms::BlurY_PS m_Shader[ShaderPermutations::ENABLE_SHARPNESS_PROFILE_COUNT][ShaderPermutations::KERNEL_RADIUS_COUNT]; +#if _WIN32 + static_assert(ShaderPermutations::ENABLE_SHARPNESS_PROFILE_COUNT == 2, ""); + static_assert(ShaderPermutations::KERNEL_RADIUS_COUNT == 2, ""); +#endif +}; + +}; diff --git a/src/shaders/out/gl/CoarseAO_PS.cpp b/src/shaders/out/gl/CoarseAO_PS.cpp new file mode 100644 index 0000000..a1bde56 --- /dev/null +++ b/src/shaders/out/gl/CoarseAO_PS.cpp @@ -0,0 +1,15519 @@ +static const char* g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_0_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"struct PerPassConstantBuffer_0_Type {\n" +" vec4 f4Jitter;\n" +" vec2 f2Offset;\n" +" float fSliceIndex;\n" +" uint uSliceIndex;\n" +"};\n" +"uniform PerPassConstantBuffer {\n" +" PerPassConstantBuffer_0_Type PerPassConstantBuffer_0;\n" +"};\n" +"uniform sampler2DArray g_t0;\n" +"uniform sampler2D g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[8];\n" +"ivec4 Temp_int[8];\n" +"uvec4 Temp_uint[8];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(floor(Input0.xyxx)).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(4.000000, 4.000000, 0.000000, 0.000000) + PerPassConstantBuffer_0.f2Offset.xyxx.xyxx).xy;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_1.xyxx.xxxy).zw;\n" +" Temp[1].xy = vec4(Temp[0].zwzz * vec4(0.250000, 0.250000, 0.000000, 0.000000)).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[2].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[0].z = GlobalConstantBuffer_5 / Temp[2].z;\n" +" Temp_uint[0].w = ((Temp[0].z)< (1.000000)) ? 0xFFFFFFFFu : 0u;\n" +" if((Temp_uint[0].w)!=0u){\n" +" Output0.x = vec4(1.000000).x;\n" +" return;\n" +" //ENDIF\n" +" }\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[1].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[2].xy = vec4(Temp[2].zzzz * Temp[1].zwzz).xy;\n" +" Temp_int[3].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[3].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[0].xyw = texelFetch(g_t1, ivec2((Temp_int[3]).xy), 0).xywz.xyw;\n" +" Temp[0].xyw = vec4(Temp[0].xyxw * vec4(2.000000, 2.000000, 0.000000, 2.000000) + vec4(-1.000000, -1.000000, 0.000000, -1.000000)).xyw;\n" +" Temp[1].z = Temp[0].z * 0.050000;\n" +" Temp[1].z = PerPassConstantBuffer_0.f4Jitter.z * Temp[1].z + 1.000000;\n" +" Temp[3].xyz = vec4(PerPassConstantBuffer_0.f4Jitter.xyyx * vec4(1.000000, -1.000000, -0.707107, 0.000000)).xyz;\n" +" Temp[4].xy = vec4(Temp[1].zzzz * Temp[3].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[4].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[5].z = (textureLod(g_t0, Temp[4].xyz, 0.000000).yzxw).z;\n" +" Temp[4].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[4].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[5].xy = vec4(Temp[5].zzzz * Temp[4].xyxx).xy;\n" +" Temp[1].w = Temp[0].z * 0.050000 + Temp[1].z;\n" +" Temp[4].xyz = vec4(-Temp[2].xyzx + Temp[5].xyzx).xyz;\n" +" Temp[2].w = vec4(dot((Temp[4].xyzx).xyz, (Temp[4].xyzx).xyz)).w;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].xyzx).xyz)).w;\n" +" Temp[4].x = vec4(inversesqrt(Temp[2].w)).x;\n" +" Temp[3].w = Temp[3].w * Temp[4].x + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[2].w = Temp[2].w * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[2].w = clamp(Temp[2].w, 0.0, 1.0);\n" +" Temp[4].xy = vec4(Temp[3].xyxx * Temp[1].wwww).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[4].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[5].z = (textureLod(g_t0, Temp[4].xyz, 0.000000).yzxw).z;\n" +" Temp[4].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[4].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[5].xy = vec4(Temp[5].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].x = Temp[0].z * 0.050000 + Temp[1].w;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[5].xxyz).yzw;\n" +" Temp[5].x = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).x;\n" +" Temp[4].y = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[4].z = vec4(inversesqrt(Temp[5].x)).z;\n" +" Temp[4].y = Temp[4].y * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[4].y = clamp(Temp[4].y, 0.0, 1.0);\n" +" Temp[4].z = Temp[5].x * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[4].z = clamp(Temp[4].z, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[3].xyxx * Temp[4].xxxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[0].z = Temp[0].z * 0.050000 + Temp[4].x;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[4].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(dot((Temp[0].xywx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[5].y = vec4(inversesqrt(Temp[4].w)).y;\n" +" Temp[5].x = Temp[5].x * Temp[5].y + -GlobalConstantBuffer_8;\n" +" Temp[5].x = clamp(Temp[5].x, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[5].x;\n" +" Temp[4].y = Temp[4].y * Temp[4].z + Temp[4].w;\n" +" Temp[3].xy = vec4(Temp[3].xyxx * Temp[0].zzzz).xy;\n" +" Temp[3].xy = vec4(roundEven(Temp[3].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[3].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[3].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[3].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].x = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[3].y = vec4(dot((Temp[0].xywx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[4].z = vec4(inversesqrt(Temp[3].x)).z;\n" +" Temp[3].y = Temp[3].y * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].x * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].x = clamp(Temp[3].x, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].y * Temp[3].x + Temp[4].y;\n" +" Temp[4].yz = vec4(PerPassConstantBuffer_0.f4Jitter.xxyx * vec4(0.000000, 0.707107, 0.707107, 0.000000)).yz;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].z;\n" +" Temp[3].y = Temp[4].y + Temp[4].z;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[5].zw = vec4(Temp[1].zzzz * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[4].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].y)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * Temp[4].w;\n" +" Temp[2].w = Temp[3].w * Temp[2].w + Temp[3].y;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[3].ywyy).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[3].ywyy).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[4].z;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.y * -0.707107 + Temp[4].y;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = -PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.y * -0.707107;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[3].y;\n" +" Temp[3].y = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(-0.707107, -0.707107, 0.000000, 0.000000)).xy)).y;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.000000 + PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.y * 0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[3].z;\n" +" Temp[3].y = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(0.707107, -0.707107, 0.000000, 0.000000)).xy)).y;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yz = vec4(Temp[1].zzzz * Temp[5].xxyx).yz;\n" +" Temp[3].yz = vec4(roundEven(Temp[3].yyzy)).yz;\n" +" Temp[6].xy = vec4(Temp[3].yzyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[3].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[4].yz = vec4(GlobalConstantBuffer_3.xyxx.xxyx * Temp[6].xxyx + GlobalConstantBuffer_4.xxxy.zzwz).yz;\n" +" Temp[3].yz = vec4(Temp[3].wwww * Temp[4].yyzy).yz;\n" +" Temp[3].yzw = vec4(-Temp[2].xxyz + Temp[3].yyzw).yzw;\n" +" Temp[1].z = vec4(dot((Temp[3].yzwy).xyz, (Temp[3].yzwy).xyz)).z;\n" +" Temp[3].y = vec4(dot((Temp[0].xywx).xyz, (Temp[3].yzwy).xyz)).y;\n" +" Temp[3].z = vec4(inversesqrt(Temp[1].z)).z;\n" +" Temp[3].y = Temp[3].y * Temp[3].z + -GlobalConstantBuffer_8;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[1].z = Temp[3].y * Temp[1].z + Temp[2].w;\n" +" Temp[3].yz = vec4(Temp[1].wwww * Temp[5].xxyx).yz;\n" +" Temp[3].yz = vec4(roundEven(Temp[3].yyzy)).yz;\n" +" Temp[6].xy = vec4(Temp[3].yzyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[3].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[4].yz = vec4(GlobalConstantBuffer_3.xyxx.xxyx * Temp[6].xxyx + GlobalConstantBuffer_4.xxxy.zzwz).yz;\n" +" Temp[3].yz = vec4(Temp[3].wwww * Temp[4].yyzy).yz;\n" +" Temp[3].yzw = vec4(-Temp[2].xxyz + Temp[3].yyzw).yzw;\n" +" Temp[1].w = vec4(dot((Temp[3].yzwy).xyz, (Temp[3].yzwy).xyz)).w;\n" +" Temp[2].w = vec4(dot((Temp[0].xywx).xyz, (Temp[3].yzwy).xyz)).w;\n" +" Temp[3].y = vec4(inversesqrt(Temp[1].w)).y;\n" +" Temp[2].w = Temp[2].w * Temp[3].y + -GlobalConstantBuffer_8;\n" +" Temp[2].w = clamp(Temp[2].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[1].w * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[2].w * Temp[1].w + Temp[3].x;\n" +" Temp[3].xy = vec4(Temp[4].xxxx * Temp[5].xyxx).xy;\n" +" Temp[3].xy = vec4(roundEven(Temp[3].xyxx)).xy;\n" +" Temp[3].xy = vec4(Temp[3].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[3].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[3].xyz, 0.000000).yzxw).z;\n" +" Temp[3].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[3].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[3].xyxx).xy;\n" +" Temp[3].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[2].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[3].xyzx).xyz)).w;\n" +" Temp[3].x = vec4(dot((Temp[0].xywx).xyz, (Temp[3].xyzx).xyz)).x;\n" +" Temp[3].y = vec4(inversesqrt(Temp[2].w)).y;\n" +" Temp[3].x = Temp[3].x * Temp[3].y + -GlobalConstantBuffer_8;\n" +" Temp[3].x = clamp(Temp[3].x, 0.0, 1.0);\n" +" Temp[2].w = Temp[2].w * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[2].w = clamp(Temp[2].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[3].x * Temp[2].w + Temp[1].w;\n" +" Temp[3].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[3].xy = vec4(roundEven(Temp[3].xyxx)).xy;\n" +" Temp[3].xy = vec4(Temp[3].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[3].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[3].xyz, 0.000000).yzxw).z;\n" +" Temp[1].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[3].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[1].xyxx).xy;\n" +" Temp[2].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[0].z = vec4(dot((Temp[2].xyzx).xyz, (Temp[2].xyzx).xyz)).z;\n" +" Temp[0].x = vec4(dot((Temp[0].xywx).xyz, (Temp[2].xyzx).xyz)).x;\n" +" Temp[0].y = vec4(inversesqrt(Temp[0].z)).y;\n" +" Temp[0].x = Temp[0].x * Temp[0].y + -GlobalConstantBuffer_8;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].y = Temp[0].z * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].x = Temp[0].x * Temp[0].y + Temp[1].w;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_10;\n" +" Temp[0].x = Temp[1].z * GlobalConstantBuffer_9 + Temp[0].x;\n" +" Output0.x = -Temp[0].x * 0.062500 + 1.000000;\n" +" Output0.x = clamp(Output0.x, 0.0, 1.0);\n" +" return;\n" +"}\n" +; +static const char* g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_1_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"struct PerPassConstantBuffer_0_Type {\n" +" vec4 f4Jitter;\n" +" vec2 f2Offset;\n" +" float fSliceIndex;\n" +" uint uSliceIndex;\n" +"};\n" +"uniform PerPassConstantBuffer {\n" +" PerPassConstantBuffer_0_Type PerPassConstantBuffer_0;\n" +"};\n" +"uniform sampler2DArray g_t0;\n" +"uniform sampler2D g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[8];\n" +"ivec4 Temp_int[8];\n" +"uvec4 Temp_uint[8];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(floor(Input0.xyxx)).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(4.000000, 4.000000, 0.000000, 0.000000) + PerPassConstantBuffer_0.f2Offset.xyxx.xyxx).xy;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_1.xyxx.xxxy).zw;\n" +" Temp[1].xy = vec4(Temp[0].zwzz * vec4(0.250000, 0.250000, 0.000000, 0.000000)).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[2].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[0].z = GlobalConstantBuffer_5 / Temp[2].z;\n" +" Temp_uint[0].w = ((Temp[0].z)< (1.000000)) ? 0xFFFFFFFFu : 0u;\n" +" if((Temp_uint[0].w)!=0u){\n" +" Output0.x = vec4(1.000000).x;\n" +" return;\n" +" //ENDIF\n" +" }\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[1].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[2].xy = vec4(Temp[2].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx + GlobalConstantBuffer_21.xyxx.xyxx).xy;\n" +" Temp_int[3].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[3].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[0].xyw = texelFetch(g_t1, ivec2((Temp_int[3]).xy), 0).xywz.xyw;\n" +" Temp[0].xyw = vec4(Temp[0].xyxw * GlobalConstantBuffer_28 + GlobalConstantBuffer_29).xyw;\n" +" Temp[3].xyz = vec4(Temp[0].yyyy * GlobalConstantBuffer_27[1].xyzx).xyz;\n" +" Temp[3].xyz = vec4(Temp[0].xxxx * GlobalConstantBuffer_27[0].xyzx + Temp[3].xyzx).xyz;\n" +" Temp[0].xyw = vec4(Temp[0].wwww * GlobalConstantBuffer_27[2].xyxz + Temp[3].xyxz).xyw;\n" +" Temp[1].z = vec4(dot((Temp[0].xywx).xyz, (Temp[0].xywx).xyz)).z;\n" +" Temp[1].z = vec4(inversesqrt(Temp[1].z)).z;\n" +" Temp[0].xyw = vec4(Temp[0].xyxw * Temp[1].zzzz).xyw;\n" +" Temp[1].z = Temp[0].z * 0.050000;\n" +" Temp[1].z = PerPassConstantBuffer_0.f4Jitter.z * Temp[1].z + 1.000000;\n" +" Temp[3].xyz = vec4(PerPassConstantBuffer_0.f4Jitter.xyyx * vec4(1.000000, -1.000000, -0.707107, 0.000000)).xyz;\n" +" Temp[4].xy = vec4(Temp[1].zzzz * Temp[3].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[4].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[5].z = (textureLod(g_t0, Temp[4].xyz, 0.000000).yzxw).z;\n" +" Temp[4].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[4].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[5].xy = vec4(Temp[5].zzzz * Temp[4].xyxx).xy;\n" +" Temp[1].w = Temp[0].z * 0.050000 + Temp[1].z;\n" +" Temp[4].xyz = vec4(-Temp[2].xyzx + Temp[5].xyzx).xyz;\n" +" Temp[2].w = vec4(dot((Temp[4].xyzx).xyz, (Temp[4].xyzx).xyz)).w;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].xyzx).xyz)).w;\n" +" Temp[4].x = vec4(inversesqrt(Temp[2].w)).x;\n" +" Temp[3].w = Temp[3].w * Temp[4].x + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[2].w = Temp[2].w * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[2].w = clamp(Temp[2].w, 0.0, 1.0);\n" +" Temp[4].xy = vec4(Temp[3].xyxx * Temp[1].wwww).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[4].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[5].z = (textureLod(g_t0, Temp[4].xyz, 0.000000).yzxw).z;\n" +" Temp[4].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[4].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[5].xy = vec4(Temp[5].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].x = Temp[0].z * 0.050000 + Temp[1].w;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[5].xxyz).yzw;\n" +" Temp[5].x = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).x;\n" +" Temp[4].y = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[4].z = vec4(inversesqrt(Temp[5].x)).z;\n" +" Temp[4].y = Temp[4].y * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[4].y = clamp(Temp[4].y, 0.0, 1.0);\n" +" Temp[4].z = Temp[5].x * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[4].z = clamp(Temp[4].z, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[3].xyxx * Temp[4].xxxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[0].z = Temp[0].z * 0.050000 + Temp[4].x;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[4].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(dot((Temp[0].xywx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[5].y = vec4(inversesqrt(Temp[4].w)).y;\n" +" Temp[5].x = Temp[5].x * Temp[5].y + -GlobalConstantBuffer_8;\n" +" Temp[5].x = clamp(Temp[5].x, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[5].x;\n" +" Temp[4].y = Temp[4].y * Temp[4].z + Temp[4].w;\n" +" Temp[3].xy = vec4(Temp[3].xyxx * Temp[0].zzzz).xy;\n" +" Temp[3].xy = vec4(roundEven(Temp[3].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[3].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[3].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[3].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].x = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[3].y = vec4(dot((Temp[0].xywx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[4].z = vec4(inversesqrt(Temp[3].x)).z;\n" +" Temp[3].y = Temp[3].y * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].x * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].x = clamp(Temp[3].x, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].y * Temp[3].x + Temp[4].y;\n" +" Temp[4].yz = vec4(PerPassConstantBuffer_0.f4Jitter.xxyx * vec4(0.000000, 0.707107, 0.707107, 0.000000)).yz;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].z;\n" +" Temp[3].y = Temp[4].y + Temp[4].z;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[5].zw = vec4(Temp[1].zzzz * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[4].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].y)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * Temp[4].w;\n" +" Temp[2].w = Temp[3].w * Temp[2].w + Temp[3].y;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[3].ywyy).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[3].ywyy).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[4].z;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.y * -0.707107 + Temp[4].y;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = -PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.y * -0.707107;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[3].y;\n" +" Temp[3].y = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(-0.707107, -0.707107, 0.000000, 0.000000)).xy)).y;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.000000 + PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.y * 0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[3].z;\n" +" Temp[3].y = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(0.707107, -0.707107, 0.000000, 0.000000)).xy)).y;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yz = vec4(Temp[1].zzzz * Temp[5].xxyx).yz;\n" +" Temp[3].yz = vec4(roundEven(Temp[3].yyzy)).yz;\n" +" Temp[6].xy = vec4(Temp[3].yzyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[3].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[4].yz = vec4(GlobalConstantBuffer_3.xyxx.xxyx * Temp[6].xxyx + GlobalConstantBuffer_4.xxxy.zzwz).yz;\n" +" Temp[3].yz = vec4(Temp[3].wwww * Temp[4].yyzy).yz;\n" +" Temp[3].yzw = vec4(-Temp[2].xxyz + Temp[3].yyzw).yzw;\n" +" Temp[1].z = vec4(dot((Temp[3].yzwy).xyz, (Temp[3].yzwy).xyz)).z;\n" +" Temp[3].y = vec4(dot((Temp[0].xywx).xyz, (Temp[3].yzwy).xyz)).y;\n" +" Temp[3].z = vec4(inversesqrt(Temp[1].z)).z;\n" +" Temp[3].y = Temp[3].y * Temp[3].z + -GlobalConstantBuffer_8;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[1].z = Temp[3].y * Temp[1].z + Temp[2].w;\n" +" Temp[3].yz = vec4(Temp[1].wwww * Temp[5].xxyx).yz;\n" +" Temp[3].yz = vec4(roundEven(Temp[3].yyzy)).yz;\n" +" Temp[6].xy = vec4(Temp[3].yzyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[3].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[4].yz = vec4(GlobalConstantBuffer_3.xyxx.xxyx * Temp[6].xxyx + GlobalConstantBuffer_4.xxxy.zzwz).yz;\n" +" Temp[3].yz = vec4(Temp[3].wwww * Temp[4].yyzy).yz;\n" +" Temp[3].yzw = vec4(-Temp[2].xxyz + Temp[3].yyzw).yzw;\n" +" Temp[1].w = vec4(dot((Temp[3].yzwy).xyz, (Temp[3].yzwy).xyz)).w;\n" +" Temp[2].w = vec4(dot((Temp[0].xywx).xyz, (Temp[3].yzwy).xyz)).w;\n" +" Temp[3].y = vec4(inversesqrt(Temp[1].w)).y;\n" +" Temp[2].w = Temp[2].w * Temp[3].y + -GlobalConstantBuffer_8;\n" +" Temp[2].w = clamp(Temp[2].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[1].w * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[2].w * Temp[1].w + Temp[3].x;\n" +" Temp[3].xy = vec4(Temp[4].xxxx * Temp[5].xyxx).xy;\n" +" Temp[3].xy = vec4(roundEven(Temp[3].xyxx)).xy;\n" +" Temp[3].xy = vec4(Temp[3].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[3].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[3].xyz, 0.000000).yzxw).z;\n" +" Temp[3].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[3].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[3].xyxx).xy;\n" +" Temp[3].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[2].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[3].xyzx).xyz)).w;\n" +" Temp[3].x = vec4(dot((Temp[0].xywx).xyz, (Temp[3].xyzx).xyz)).x;\n" +" Temp[3].y = vec4(inversesqrt(Temp[2].w)).y;\n" +" Temp[3].x = Temp[3].x * Temp[3].y + -GlobalConstantBuffer_8;\n" +" Temp[3].x = clamp(Temp[3].x, 0.0, 1.0);\n" +" Temp[2].w = Temp[2].w * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[2].w = clamp(Temp[2].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[3].x * Temp[2].w + Temp[1].w;\n" +" Temp[3].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[3].xy = vec4(roundEven(Temp[3].xyxx)).xy;\n" +" Temp[3].xy = vec4(Temp[3].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[3].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[3].xyz, 0.000000).yzxw).z;\n" +" Temp[1].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[3].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[1].xyxx).xy;\n" +" Temp[2].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[0].z = vec4(dot((Temp[2].xyzx).xyz, (Temp[2].xyzx).xyz)).z;\n" +" Temp[0].x = vec4(dot((Temp[0].xywx).xyz, (Temp[2].xyzx).xyz)).x;\n" +" Temp[0].y = vec4(inversesqrt(Temp[0].z)).y;\n" +" Temp[0].x = Temp[0].x * Temp[0].y + -GlobalConstantBuffer_8;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].y = Temp[0].z * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].x = Temp[0].x * Temp[0].y + Temp[1].w;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_10;\n" +" Temp[0].x = Temp[1].z * GlobalConstantBuffer_9 + Temp[0].x;\n" +" Output0.x = -Temp[0].x * 0.062500 + 1.000000;\n" +" Output0.x = clamp(Output0.x, 0.0, 1.0);\n" +" return;\n" +"}\n" +; +static const char* g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_2_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"struct PerPassConstantBuffer_0_Type {\n" +" vec4 f4Jitter;\n" +" vec2 f2Offset;\n" +" float fSliceIndex;\n" +" uint uSliceIndex;\n" +"};\n" +"uniform PerPassConstantBuffer {\n" +" PerPassConstantBuffer_0_Type PerPassConstantBuffer_0;\n" +"};\n" +"uniform sampler2DArray g_t0;\n" +"uniform sampler2DMS g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[8];\n" +"ivec4 Temp_int[8];\n" +"uvec4 Temp_uint[8];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(floor(Input0.xyxx)).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(4.000000, 4.000000, 0.000000, 0.000000) + PerPassConstantBuffer_0.f2Offset.xyxx.xyxx).xy;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_1.xyxx.xxxy).zw;\n" +" Temp[1].xy = vec4(Temp[0].zwzz * vec4(0.250000, 0.250000, 0.000000, 0.000000)).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[2].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[0].z = GlobalConstantBuffer_5 / Temp[2].z;\n" +" Temp_uint[0].w = ((Temp[0].z)< (1.000000)) ? 0xFFFFFFFFu : 0u;\n" +" if((Temp_uint[0].w)!=0u){\n" +" Output0.x = vec4(1.000000).x;\n" +" return;\n" +" //ENDIF\n" +" }\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[1].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[2].xy = vec4(Temp[2].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx + GlobalConstantBuffer_21.xyxx.xyxx).xy;\n" +" Temp_int[3].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[3].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[0].xyw = texelFetch(g_t1, ivec2((Temp_int[3]).xy), 0).xywz.xyw;\n" +" Temp[0].xyw = vec4(Temp[0].xyxw * GlobalConstantBuffer_28 + GlobalConstantBuffer_29).xyw;\n" +" Temp[3].xyz = vec4(Temp[0].yyyy * GlobalConstantBuffer_27[1].xyzx).xyz;\n" +" Temp[3].xyz = vec4(Temp[0].xxxx * GlobalConstantBuffer_27[0].xyzx + Temp[3].xyzx).xyz;\n" +" Temp[0].xyw = vec4(Temp[0].wwww * GlobalConstantBuffer_27[2].xyxz + Temp[3].xyxz).xyw;\n" +" Temp[1].z = vec4(dot((Temp[0].xywx).xyz, (Temp[0].xywx).xyz)).z;\n" +" Temp[1].z = vec4(inversesqrt(Temp[1].z)).z;\n" +" Temp[0].xyw = vec4(Temp[0].xyxw * Temp[1].zzzz).xyw;\n" +" Temp[1].z = Temp[0].z * 0.050000;\n" +" Temp[1].z = PerPassConstantBuffer_0.f4Jitter.z * Temp[1].z + 1.000000;\n" +" Temp[3].xyz = vec4(PerPassConstantBuffer_0.f4Jitter.xyyx * vec4(1.000000, -1.000000, -0.707107, 0.000000)).xyz;\n" +" Temp[4].xy = vec4(Temp[1].zzzz * Temp[3].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[4].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[5].z = (textureLod(g_t0, Temp[4].xyz, 0.000000).yzxw).z;\n" +" Temp[4].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[4].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[5].xy = vec4(Temp[5].zzzz * Temp[4].xyxx).xy;\n" +" Temp[1].w = Temp[0].z * 0.050000 + Temp[1].z;\n" +" Temp[4].xyz = vec4(-Temp[2].xyzx + Temp[5].xyzx).xyz;\n" +" Temp[2].w = vec4(dot((Temp[4].xyzx).xyz, (Temp[4].xyzx).xyz)).w;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].xyzx).xyz)).w;\n" +" Temp[4].x = vec4(inversesqrt(Temp[2].w)).x;\n" +" Temp[3].w = Temp[3].w * Temp[4].x + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[2].w = Temp[2].w * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[2].w = clamp(Temp[2].w, 0.0, 1.0);\n" +" Temp[4].xy = vec4(Temp[3].xyxx * Temp[1].wwww).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[4].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[5].z = (textureLod(g_t0, Temp[4].xyz, 0.000000).yzxw).z;\n" +" Temp[4].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[4].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[5].xy = vec4(Temp[5].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].x = Temp[0].z * 0.050000 + Temp[1].w;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[5].xxyz).yzw;\n" +" Temp[5].x = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).x;\n" +" Temp[4].y = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[4].z = vec4(inversesqrt(Temp[5].x)).z;\n" +" Temp[4].y = Temp[4].y * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[4].y = clamp(Temp[4].y, 0.0, 1.0);\n" +" Temp[4].z = Temp[5].x * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[4].z = clamp(Temp[4].z, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[3].xyxx * Temp[4].xxxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[0].z = Temp[0].z * 0.050000 + Temp[4].x;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[4].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(dot((Temp[0].xywx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[5].y = vec4(inversesqrt(Temp[4].w)).y;\n" +" Temp[5].x = Temp[5].x * Temp[5].y + -GlobalConstantBuffer_8;\n" +" Temp[5].x = clamp(Temp[5].x, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[5].x;\n" +" Temp[4].y = Temp[4].y * Temp[4].z + Temp[4].w;\n" +" Temp[3].xy = vec4(Temp[3].xyxx * Temp[0].zzzz).xy;\n" +" Temp[3].xy = vec4(roundEven(Temp[3].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[3].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[3].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[3].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].x = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[3].y = vec4(dot((Temp[0].xywx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[4].z = vec4(inversesqrt(Temp[3].x)).z;\n" +" Temp[3].y = Temp[3].y * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].x * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].x = clamp(Temp[3].x, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].y * Temp[3].x + Temp[4].y;\n" +" Temp[4].yz = vec4(PerPassConstantBuffer_0.f4Jitter.xxyx * vec4(0.000000, 0.707107, 0.707107, 0.000000)).yz;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].z;\n" +" Temp[3].y = Temp[4].y + Temp[4].z;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[5].zw = vec4(Temp[1].zzzz * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[4].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].y)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * Temp[4].w;\n" +" Temp[2].w = Temp[3].w * Temp[2].w + Temp[3].y;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[3].ywyy).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[3].ywyy).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[4].z;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.y * -0.707107 + Temp[4].y;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = -PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.y * -0.707107;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[3].y;\n" +" Temp[3].y = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(-0.707107, -0.707107, 0.000000, 0.000000)).xy)).y;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.000000 + PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.y * 0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[3].z;\n" +" Temp[3].y = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(0.707107, -0.707107, 0.000000, 0.000000)).xy)).y;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yz = vec4(Temp[1].zzzz * Temp[5].xxyx).yz;\n" +" Temp[3].yz = vec4(roundEven(Temp[3].yyzy)).yz;\n" +" Temp[6].xy = vec4(Temp[3].yzyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[3].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[4].yz = vec4(GlobalConstantBuffer_3.xyxx.xxyx * Temp[6].xxyx + GlobalConstantBuffer_4.xxxy.zzwz).yz;\n" +" Temp[3].yz = vec4(Temp[3].wwww * Temp[4].yyzy).yz;\n" +" Temp[3].yzw = vec4(-Temp[2].xxyz + Temp[3].yyzw).yzw;\n" +" Temp[1].z = vec4(dot((Temp[3].yzwy).xyz, (Temp[3].yzwy).xyz)).z;\n" +" Temp[3].y = vec4(dot((Temp[0].xywx).xyz, (Temp[3].yzwy).xyz)).y;\n" +" Temp[3].z = vec4(inversesqrt(Temp[1].z)).z;\n" +" Temp[3].y = Temp[3].y * Temp[3].z + -GlobalConstantBuffer_8;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[1].z = Temp[3].y * Temp[1].z + Temp[2].w;\n" +" Temp[3].yz = vec4(Temp[1].wwww * Temp[5].xxyx).yz;\n" +" Temp[3].yz = vec4(roundEven(Temp[3].yyzy)).yz;\n" +" Temp[6].xy = vec4(Temp[3].yzyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[3].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[4].yz = vec4(GlobalConstantBuffer_3.xyxx.xxyx * Temp[6].xxyx + GlobalConstantBuffer_4.xxxy.zzwz).yz;\n" +" Temp[3].yz = vec4(Temp[3].wwww * Temp[4].yyzy).yz;\n" +" Temp[3].yzw = vec4(-Temp[2].xxyz + Temp[3].yyzw).yzw;\n" +" Temp[1].w = vec4(dot((Temp[3].yzwy).xyz, (Temp[3].yzwy).xyz)).w;\n" +" Temp[2].w = vec4(dot((Temp[0].xywx).xyz, (Temp[3].yzwy).xyz)).w;\n" +" Temp[3].y = vec4(inversesqrt(Temp[1].w)).y;\n" +" Temp[2].w = Temp[2].w * Temp[3].y + -GlobalConstantBuffer_8;\n" +" Temp[2].w = clamp(Temp[2].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[1].w * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[2].w * Temp[1].w + Temp[3].x;\n" +" Temp[3].xy = vec4(Temp[4].xxxx * Temp[5].xyxx).xy;\n" +" Temp[3].xy = vec4(roundEven(Temp[3].xyxx)).xy;\n" +" Temp[3].xy = vec4(Temp[3].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[3].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[3].xyz, 0.000000).yzxw).z;\n" +" Temp[3].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[3].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[3].xyxx).xy;\n" +" Temp[3].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[2].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[3].xyzx).xyz)).w;\n" +" Temp[3].x = vec4(dot((Temp[0].xywx).xyz, (Temp[3].xyzx).xyz)).x;\n" +" Temp[3].y = vec4(inversesqrt(Temp[2].w)).y;\n" +" Temp[3].x = Temp[3].x * Temp[3].y + -GlobalConstantBuffer_8;\n" +" Temp[3].x = clamp(Temp[3].x, 0.0, 1.0);\n" +" Temp[2].w = Temp[2].w * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[2].w = clamp(Temp[2].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[3].x * Temp[2].w + Temp[1].w;\n" +" Temp[3].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[3].xy = vec4(roundEven(Temp[3].xyxx)).xy;\n" +" Temp[3].xy = vec4(Temp[3].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[3].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[3].xyz, 0.000000).yzxw).z;\n" +" Temp[1].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[3].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[1].xyxx).xy;\n" +" Temp[2].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[0].z = vec4(dot((Temp[2].xyzx).xyz, (Temp[2].xyzx).xyz)).z;\n" +" Temp[0].x = vec4(dot((Temp[0].xywx).xyz, (Temp[2].xyzx).xyz)).x;\n" +" Temp[0].y = vec4(inversesqrt(Temp[0].z)).y;\n" +" Temp[0].x = Temp[0].x * Temp[0].y + -GlobalConstantBuffer_8;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].y = Temp[0].z * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].x = Temp[0].x * Temp[0].y + Temp[1].w;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_10;\n" +" Temp[0].x = Temp[1].z * GlobalConstantBuffer_9 + Temp[0].x;\n" +" Output0.x = -Temp[0].x * 0.062500 + 1.000000;\n" +" Output0.x = clamp(Output0.x, 0.0, 1.0);\n" +" return;\n" +"}\n" +; +static const char* g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_0_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"struct PerPassConstantBuffer_0_Type {\n" +" vec4 f4Jitter;\n" +" vec2 f2Offset;\n" +" float fSliceIndex;\n" +" uint uSliceIndex;\n" +"};\n" +"uniform PerPassConstantBuffer {\n" +" PerPassConstantBuffer_0_Type PerPassConstantBuffer_0;\n" +"};\n" +"uniform sampler2DArray g_t0;\n" +"uniform sampler2D g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[8];\n" +"ivec4 Temp_int[8];\n" +"uvec4 Temp_uint[8];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(floor(Input0.xyxx)).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(4.000000, 4.000000, 0.000000, 0.000000) + PerPassConstantBuffer_0.f2Offset.xyxx.xyxx).xy;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_1.xyxx.xxxy).zw;\n" +" Temp[1].xy = vec4(Temp[0].zwzz * vec4(0.250000, 0.250000, 0.000000, 0.000000)).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[2].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[0].z = GlobalConstantBuffer_5 / Temp[2].z;\n" +" Temp_uint[0].w = ((Temp[0].z)< (1.000000)) ? 0xFFFFFFFFu : 0u;\n" +" if((Temp_uint[0].w)!=0u){\n" +" Output0.x = vec4(1.000000).x;\n" +" return;\n" +" //ENDIF\n" +" }\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[1].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[2].xy = vec4(Temp[2].zzzz * Temp[1].zwzz).xy;\n" +" Temp_int[3].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[3].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[0].xyw = texelFetch(g_t1, ivec2((Temp_int[3]).xy), 0).xywz.xyw;\n" +" Temp[0].xyw = vec4(Temp[0].xyxw * vec4(2.000000, 2.000000, 0.000000, 2.000000) + vec4(-1.000000, -1.000000, 0.000000, -1.000000)).xyw;\n" +" Temp[1].z = Temp[0].z * 0.050000;\n" +" Temp[1].z = PerPassConstantBuffer_0.f4Jitter.z * Temp[1].z + 1.000000;\n" +" Temp[3].xyz = vec4(PerPassConstantBuffer_0.f4Jitter.xyyx * vec4(1.000000, -1.000000, -0.707107, 0.000000)).xyz;\n" +" Temp[4].xy = vec4(Temp[1].zzzz * Temp[3].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[4].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[5].z = (textureLod(g_t0, Temp[4].xyz, 0.000000).yzxw).z;\n" +" Temp[4].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[4].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[5].xy = vec4(Temp[5].zzzz * Temp[4].xyxx).xy;\n" +" Temp[1].w = Temp[0].z * 0.050000 + Temp[1].z;\n" +" Temp[4].xyz = vec4(-Temp[2].xyzx + Temp[5].xyzx).xyz;\n" +" Temp[2].w = vec4(dot((Temp[4].xyzx).xyz, (Temp[4].xyzx).xyz)).w;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].xyzx).xyz)).w;\n" +" Temp[4].x = vec4(inversesqrt(Temp[2].w)).x;\n" +" Temp[3].w = Temp[3].w * Temp[4].x + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[2].w = Temp[2].w * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[2].w = clamp(Temp[2].w, 0.0, 1.0);\n" +" Temp[4].xy = vec4(Temp[3].xyxx * Temp[1].wwww).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[4].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[5].z = (textureLod(g_t0, Temp[4].xyz, 0.000000).yzxw).z;\n" +" Temp[4].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[4].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[5].xy = vec4(Temp[5].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].x = Temp[0].z * 0.050000 + Temp[1].w;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[5].xxyz).yzw;\n" +" Temp[5].x = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).x;\n" +" Temp[4].y = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[4].z = vec4(inversesqrt(Temp[5].x)).z;\n" +" Temp[4].y = Temp[4].y * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[4].y = clamp(Temp[4].y, 0.0, 1.0);\n" +" Temp[4].z = Temp[5].x * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[4].z = clamp(Temp[4].z, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[3].xyxx * Temp[4].xxxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[0].z = Temp[0].z * 0.050000 + Temp[4].x;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[4].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(dot((Temp[0].xywx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[5].y = vec4(inversesqrt(Temp[4].w)).y;\n" +" Temp[5].x = Temp[5].x * Temp[5].y + -GlobalConstantBuffer_8;\n" +" Temp[5].x = clamp(Temp[5].x, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[5].x;\n" +" Temp[4].y = Temp[4].y * Temp[4].z + Temp[4].w;\n" +" Temp[3].xy = vec4(Temp[3].xyxx * Temp[0].zzzz).xy;\n" +" Temp[3].xy = vec4(roundEven(Temp[3].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[3].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[3].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[3].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].x = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[3].y = vec4(dot((Temp[0].xywx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[4].z = vec4(inversesqrt(Temp[3].x)).z;\n" +" Temp[3].y = Temp[3].y * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].x * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].x = clamp(Temp[3].x, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].y * Temp[3].x + Temp[4].y;\n" +" Temp[4].yz = vec4(PerPassConstantBuffer_0.f4Jitter.xxyx * vec4(0.000000, 0.707107, 0.707107, 0.000000)).yz;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].z;\n" +" Temp[3].y = Temp[4].y + Temp[4].z;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[5].zw = vec4(Temp[1].zzzz * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[4].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].y)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * Temp[4].w;\n" +" Temp[2].w = Temp[3].w * Temp[2].w + Temp[3].y;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[3].ywyy).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[3].ywyy).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[4].z;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.y * -0.707107 + Temp[4].y;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = -PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.y * -0.707107;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[3].y;\n" +" Temp[3].y = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(-0.707107, -0.707107, 0.000000, 0.000000)).xy)).y;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.000000 + PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.y * 0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[3].z;\n" +" Temp[3].y = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(0.707107, -0.707107, 0.000000, 0.000000)).xy)).y;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yz = vec4(Temp[1].zzzz * Temp[5].xxyx).yz;\n" +" Temp[3].yz = vec4(roundEven(Temp[3].yyzy)).yz;\n" +" Temp[6].xy = vec4(Temp[3].yzyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[3].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[4].yz = vec4(GlobalConstantBuffer_3.xyxx.xxyx * Temp[6].xxyx + GlobalConstantBuffer_4.xxxy.zzwz).yz;\n" +" Temp[3].yz = vec4(Temp[3].wwww * Temp[4].yyzy).yz;\n" +" Temp[3].yzw = vec4(-Temp[2].xxyz + Temp[3].yyzw).yzw;\n" +" Temp[1].z = vec4(dot((Temp[3].yzwy).xyz, (Temp[3].yzwy).xyz)).z;\n" +" Temp[3].y = vec4(dot((Temp[0].xywx).xyz, (Temp[3].yzwy).xyz)).y;\n" +" Temp[3].z = vec4(inversesqrt(Temp[1].z)).z;\n" +" Temp[3].y = Temp[3].y * Temp[3].z + -GlobalConstantBuffer_8;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[1].z = Temp[3].y * Temp[1].z + Temp[2].w;\n" +" Temp[3].yz = vec4(Temp[1].wwww * Temp[5].xxyx).yz;\n" +" Temp[3].yz = vec4(roundEven(Temp[3].yyzy)).yz;\n" +" Temp[6].xy = vec4(Temp[3].yzyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[3].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[4].yz = vec4(GlobalConstantBuffer_3.xyxx.xxyx * Temp[6].xxyx + GlobalConstantBuffer_4.xxxy.zzwz).yz;\n" +" Temp[3].yz = vec4(Temp[3].wwww * Temp[4].yyzy).yz;\n" +" Temp[3].yzw = vec4(-Temp[2].xxyz + Temp[3].yyzw).yzw;\n" +" Temp[1].w = vec4(dot((Temp[3].yzwy).xyz, (Temp[3].yzwy).xyz)).w;\n" +" Temp[2].w = vec4(dot((Temp[0].xywx).xyz, (Temp[3].yzwy).xyz)).w;\n" +" Temp[3].y = vec4(inversesqrt(Temp[1].w)).y;\n" +" Temp[2].w = Temp[2].w * Temp[3].y + -GlobalConstantBuffer_8;\n" +" Temp[2].w = clamp(Temp[2].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[1].w * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[2].w * Temp[1].w + Temp[3].x;\n" +" Temp[3].xy = vec4(Temp[4].xxxx * Temp[5].xyxx).xy;\n" +" Temp[3].xy = vec4(roundEven(Temp[3].xyxx)).xy;\n" +" Temp[3].xy = vec4(Temp[3].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[3].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[3].xyz, 0.000000).yzxw).z;\n" +" Temp[3].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[3].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[3].xyxx).xy;\n" +" Temp[3].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[2].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[3].xyzx).xyz)).w;\n" +" Temp[3].x = vec4(dot((Temp[0].xywx).xyz, (Temp[3].xyzx).xyz)).x;\n" +" Temp[3].y = vec4(inversesqrt(Temp[2].w)).y;\n" +" Temp[3].x = Temp[3].x * Temp[3].y + -GlobalConstantBuffer_8;\n" +" Temp[3].x = clamp(Temp[3].x, 0.0, 1.0);\n" +" Temp[2].w = Temp[2].w * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[2].w = clamp(Temp[2].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[3].x * Temp[2].w + Temp[1].w;\n" +" Temp[3].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[3].xy = vec4(roundEven(Temp[3].xyxx)).xy;\n" +" Temp[3].xy = vec4(Temp[3].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[3].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[3].xyz, 0.000000).yzxw).z;\n" +" Temp[1].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[3].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[1].xyxx).xy;\n" +" Temp[2].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxz).xyw;\n" +" Temp[0].z = vec4(dot((Temp[2].xywx).xyz, (Temp[2].xywx).xyz)).z;\n" +" Temp[0].x = vec4(dot((Temp[0].xywx).xyz, (Temp[2].xywx).xyz)).x;\n" +" Temp[0].y = vec4(inversesqrt(Temp[0].z)).y;\n" +" Temp[0].x = Temp[0].x * Temp[0].y + -GlobalConstantBuffer_8;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].y = Temp[0].z * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].x = Temp[0].x * Temp[0].y + Temp[1].w;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_10;\n" +" Temp[0].x = Temp[1].z * GlobalConstantBuffer_9 + Temp[0].x;\n" +" Temp[0].x = Temp[0].x * 0.031250;\n" +" Temp[0].y = Temp[2].z * GlobalConstantBuffer_22 + 1.000000;\n" +" Temp[0].y = Temp[0].y * GlobalConstantBuffer_23;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].x = vec4(dot((Temp[0].xxxx).xy, (Temp[0].yyyy).xy)).x;\n" +" Output0.x = -Temp[0].x + 1.000000;\n" +" Output0.x = clamp(Output0.x, 0.0, 1.0);\n" +" return;\n" +"}\n" +; +static const char* g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_1_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"struct PerPassConstantBuffer_0_Type {\n" +" vec4 f4Jitter;\n" +" vec2 f2Offset;\n" +" float fSliceIndex;\n" +" uint uSliceIndex;\n" +"};\n" +"uniform PerPassConstantBuffer {\n" +" PerPassConstantBuffer_0_Type PerPassConstantBuffer_0;\n" +"};\n" +"uniform sampler2DArray g_t0;\n" +"uniform sampler2D g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[8];\n" +"ivec4 Temp_int[8];\n" +"uvec4 Temp_uint[8];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(floor(Input0.xyxx)).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(4.000000, 4.000000, 0.000000, 0.000000) + PerPassConstantBuffer_0.f2Offset.xyxx.xyxx).xy;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_1.xyxx.xxxy).zw;\n" +" Temp[1].xy = vec4(Temp[0].zwzz * vec4(0.250000, 0.250000, 0.000000, 0.000000)).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[2].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[0].z = GlobalConstantBuffer_5 / Temp[2].z;\n" +" Temp_uint[0].w = ((Temp[0].z)< (1.000000)) ? 0xFFFFFFFFu : 0u;\n" +" if((Temp_uint[0].w)!=0u){\n" +" Output0.x = vec4(1.000000).x;\n" +" return;\n" +" //ENDIF\n" +" }\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[1].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[2].xy = vec4(Temp[2].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx + GlobalConstantBuffer_21.xyxx.xyxx).xy;\n" +" Temp_int[3].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[3].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[0].xyw = texelFetch(g_t1, ivec2((Temp_int[3]).xy), 0).xywz.xyw;\n" +" Temp[0].xyw = vec4(Temp[0].xyxw * GlobalConstantBuffer_28 + GlobalConstantBuffer_29).xyw;\n" +" Temp[3].xyz = vec4(Temp[0].yyyy * GlobalConstantBuffer_27[1].xyzx).xyz;\n" +" Temp[3].xyz = vec4(Temp[0].xxxx * GlobalConstantBuffer_27[0].xyzx + Temp[3].xyzx).xyz;\n" +" Temp[0].xyw = vec4(Temp[0].wwww * GlobalConstantBuffer_27[2].xyxz + Temp[3].xyxz).xyw;\n" +" Temp[1].z = vec4(dot((Temp[0].xywx).xyz, (Temp[0].xywx).xyz)).z;\n" +" Temp[1].z = vec4(inversesqrt(Temp[1].z)).z;\n" +" Temp[0].xyw = vec4(Temp[0].xyxw * Temp[1].zzzz).xyw;\n" +" Temp[1].z = Temp[0].z * 0.050000;\n" +" Temp[1].z = PerPassConstantBuffer_0.f4Jitter.z * Temp[1].z + 1.000000;\n" +" Temp[3].xyz = vec4(PerPassConstantBuffer_0.f4Jitter.xyyx * vec4(1.000000, -1.000000, -0.707107, 0.000000)).xyz;\n" +" Temp[4].xy = vec4(Temp[1].zzzz * Temp[3].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[4].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[5].z = (textureLod(g_t0, Temp[4].xyz, 0.000000).yzxw).z;\n" +" Temp[4].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[4].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[5].xy = vec4(Temp[5].zzzz * Temp[4].xyxx).xy;\n" +" Temp[1].w = Temp[0].z * 0.050000 + Temp[1].z;\n" +" Temp[4].xyz = vec4(-Temp[2].xyzx + Temp[5].xyzx).xyz;\n" +" Temp[2].w = vec4(dot((Temp[4].xyzx).xyz, (Temp[4].xyzx).xyz)).w;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].xyzx).xyz)).w;\n" +" Temp[4].x = vec4(inversesqrt(Temp[2].w)).x;\n" +" Temp[3].w = Temp[3].w * Temp[4].x + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[2].w = Temp[2].w * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[2].w = clamp(Temp[2].w, 0.0, 1.0);\n" +" Temp[4].xy = vec4(Temp[3].xyxx * Temp[1].wwww).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[4].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[5].z = (textureLod(g_t0, Temp[4].xyz, 0.000000).yzxw).z;\n" +" Temp[4].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[4].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[5].xy = vec4(Temp[5].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].x = Temp[0].z * 0.050000 + Temp[1].w;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[5].xxyz).yzw;\n" +" Temp[5].x = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).x;\n" +" Temp[4].y = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[4].z = vec4(inversesqrt(Temp[5].x)).z;\n" +" Temp[4].y = Temp[4].y * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[4].y = clamp(Temp[4].y, 0.0, 1.0);\n" +" Temp[4].z = Temp[5].x * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[4].z = clamp(Temp[4].z, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[3].xyxx * Temp[4].xxxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[0].z = Temp[0].z * 0.050000 + Temp[4].x;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[4].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(dot((Temp[0].xywx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[5].y = vec4(inversesqrt(Temp[4].w)).y;\n" +" Temp[5].x = Temp[5].x * Temp[5].y + -GlobalConstantBuffer_8;\n" +" Temp[5].x = clamp(Temp[5].x, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[5].x;\n" +" Temp[4].y = Temp[4].y * Temp[4].z + Temp[4].w;\n" +" Temp[3].xy = vec4(Temp[3].xyxx * Temp[0].zzzz).xy;\n" +" Temp[3].xy = vec4(roundEven(Temp[3].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[3].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[3].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[3].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].x = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[3].y = vec4(dot((Temp[0].xywx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[4].z = vec4(inversesqrt(Temp[3].x)).z;\n" +" Temp[3].y = Temp[3].y * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].x * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].x = clamp(Temp[3].x, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].y * Temp[3].x + Temp[4].y;\n" +" Temp[4].yz = vec4(PerPassConstantBuffer_0.f4Jitter.xxyx * vec4(0.000000, 0.707107, 0.707107, 0.000000)).yz;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].z;\n" +" Temp[3].y = Temp[4].y + Temp[4].z;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[5].zw = vec4(Temp[1].zzzz * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[4].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].y)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * Temp[4].w;\n" +" Temp[2].w = Temp[3].w * Temp[2].w + Temp[3].y;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[3].ywyy).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[3].ywyy).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[4].z;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.y * -0.707107 + Temp[4].y;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = -PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.y * -0.707107;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[3].y;\n" +" Temp[3].y = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(-0.707107, -0.707107, 0.000000, 0.000000)).xy)).y;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.000000 + PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.y * 0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[3].z;\n" +" Temp[3].y = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(0.707107, -0.707107, 0.000000, 0.000000)).xy)).y;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yz = vec4(Temp[1].zzzz * Temp[5].xxyx).yz;\n" +" Temp[3].yz = vec4(roundEven(Temp[3].yyzy)).yz;\n" +" Temp[6].xy = vec4(Temp[3].yzyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[3].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[4].yz = vec4(GlobalConstantBuffer_3.xyxx.xxyx * Temp[6].xxyx + GlobalConstantBuffer_4.xxxy.zzwz).yz;\n" +" Temp[3].yz = vec4(Temp[3].wwww * Temp[4].yyzy).yz;\n" +" Temp[3].yzw = vec4(-Temp[2].xxyz + Temp[3].yyzw).yzw;\n" +" Temp[1].z = vec4(dot((Temp[3].yzwy).xyz, (Temp[3].yzwy).xyz)).z;\n" +" Temp[3].y = vec4(dot((Temp[0].xywx).xyz, (Temp[3].yzwy).xyz)).y;\n" +" Temp[3].z = vec4(inversesqrt(Temp[1].z)).z;\n" +" Temp[3].y = Temp[3].y * Temp[3].z + -GlobalConstantBuffer_8;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[1].z = Temp[3].y * Temp[1].z + Temp[2].w;\n" +" Temp[3].yz = vec4(Temp[1].wwww * Temp[5].xxyx).yz;\n" +" Temp[3].yz = vec4(roundEven(Temp[3].yyzy)).yz;\n" +" Temp[6].xy = vec4(Temp[3].yzyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[3].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[4].yz = vec4(GlobalConstantBuffer_3.xyxx.xxyx * Temp[6].xxyx + GlobalConstantBuffer_4.xxxy.zzwz).yz;\n" +" Temp[3].yz = vec4(Temp[3].wwww * Temp[4].yyzy).yz;\n" +" Temp[3].yzw = vec4(-Temp[2].xxyz + Temp[3].yyzw).yzw;\n" +" Temp[1].w = vec4(dot((Temp[3].yzwy).xyz, (Temp[3].yzwy).xyz)).w;\n" +" Temp[2].w = vec4(dot((Temp[0].xywx).xyz, (Temp[3].yzwy).xyz)).w;\n" +" Temp[3].y = vec4(inversesqrt(Temp[1].w)).y;\n" +" Temp[2].w = Temp[2].w * Temp[3].y + -GlobalConstantBuffer_8;\n" +" Temp[2].w = clamp(Temp[2].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[1].w * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[2].w * Temp[1].w + Temp[3].x;\n" +" Temp[3].xy = vec4(Temp[4].xxxx * Temp[5].xyxx).xy;\n" +" Temp[3].xy = vec4(roundEven(Temp[3].xyxx)).xy;\n" +" Temp[3].xy = vec4(Temp[3].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[3].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[3].xyz, 0.000000).yzxw).z;\n" +" Temp[3].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[3].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[3].xyxx).xy;\n" +" Temp[3].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[2].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[3].xyzx).xyz)).w;\n" +" Temp[3].x = vec4(dot((Temp[0].xywx).xyz, (Temp[3].xyzx).xyz)).x;\n" +" Temp[3].y = vec4(inversesqrt(Temp[2].w)).y;\n" +" Temp[3].x = Temp[3].x * Temp[3].y + -GlobalConstantBuffer_8;\n" +" Temp[3].x = clamp(Temp[3].x, 0.0, 1.0);\n" +" Temp[2].w = Temp[2].w * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[2].w = clamp(Temp[2].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[3].x * Temp[2].w + Temp[1].w;\n" +" Temp[3].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[3].xy = vec4(roundEven(Temp[3].xyxx)).xy;\n" +" Temp[3].xy = vec4(Temp[3].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[3].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[3].xyz, 0.000000).yzxw).z;\n" +" Temp[1].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[3].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[1].xyxx).xy;\n" +" Temp[2].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxz).xyw;\n" +" Temp[0].z = vec4(dot((Temp[2].xywx).xyz, (Temp[2].xywx).xyz)).z;\n" +" Temp[0].x = vec4(dot((Temp[0].xywx).xyz, (Temp[2].xywx).xyz)).x;\n" +" Temp[0].y = vec4(inversesqrt(Temp[0].z)).y;\n" +" Temp[0].x = Temp[0].x * Temp[0].y + -GlobalConstantBuffer_8;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].y = Temp[0].z * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].x = Temp[0].x * Temp[0].y + Temp[1].w;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_10;\n" +" Temp[0].x = Temp[1].z * GlobalConstantBuffer_9 + Temp[0].x;\n" +" Temp[0].x = Temp[0].x * 0.031250;\n" +" Temp[0].y = Temp[2].z * GlobalConstantBuffer_22 + 1.000000;\n" +" Temp[0].y = Temp[0].y * GlobalConstantBuffer_23;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].x = vec4(dot((Temp[0].xxxx).xy, (Temp[0].yyyy).xy)).x;\n" +" Output0.x = -Temp[0].x + 1.000000;\n" +" Output0.x = clamp(Output0.x, 0.0, 1.0);\n" +" return;\n" +"}\n" +; +static const char* g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_2_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"struct PerPassConstantBuffer_0_Type {\n" +" vec4 f4Jitter;\n" +" vec2 f2Offset;\n" +" float fSliceIndex;\n" +" uint uSliceIndex;\n" +"};\n" +"uniform PerPassConstantBuffer {\n" +" PerPassConstantBuffer_0_Type PerPassConstantBuffer_0;\n" +"};\n" +"uniform sampler2DArray g_t0;\n" +"uniform sampler2DMS g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[8];\n" +"ivec4 Temp_int[8];\n" +"uvec4 Temp_uint[8];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(floor(Input0.xyxx)).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(4.000000, 4.000000, 0.000000, 0.000000) + PerPassConstantBuffer_0.f2Offset.xyxx.xyxx).xy;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_1.xyxx.xxxy).zw;\n" +" Temp[1].xy = vec4(Temp[0].zwzz * vec4(0.250000, 0.250000, 0.000000, 0.000000)).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[2].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[0].z = GlobalConstantBuffer_5 / Temp[2].z;\n" +" Temp_uint[0].w = ((Temp[0].z)< (1.000000)) ? 0xFFFFFFFFu : 0u;\n" +" if((Temp_uint[0].w)!=0u){\n" +" Output0.x = vec4(1.000000).x;\n" +" return;\n" +" //ENDIF\n" +" }\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[1].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[2].xy = vec4(Temp[2].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx + GlobalConstantBuffer_21.xyxx.xyxx).xy;\n" +" Temp_int[3].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[3].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[0].xyw = texelFetch(g_t1, ivec2((Temp_int[3]).xy), 0).xywz.xyw;\n" +" Temp[0].xyw = vec4(Temp[0].xyxw * GlobalConstantBuffer_28 + GlobalConstantBuffer_29).xyw;\n" +" Temp[3].xyz = vec4(Temp[0].yyyy * GlobalConstantBuffer_27[1].xyzx).xyz;\n" +" Temp[3].xyz = vec4(Temp[0].xxxx * GlobalConstantBuffer_27[0].xyzx + Temp[3].xyzx).xyz;\n" +" Temp[0].xyw = vec4(Temp[0].wwww * GlobalConstantBuffer_27[2].xyxz + Temp[3].xyxz).xyw;\n" +" Temp[1].z = vec4(dot((Temp[0].xywx).xyz, (Temp[0].xywx).xyz)).z;\n" +" Temp[1].z = vec4(inversesqrt(Temp[1].z)).z;\n" +" Temp[0].xyw = vec4(Temp[0].xyxw * Temp[1].zzzz).xyw;\n" +" Temp[1].z = Temp[0].z * 0.050000;\n" +" Temp[1].z = PerPassConstantBuffer_0.f4Jitter.z * Temp[1].z + 1.000000;\n" +" Temp[3].xyz = vec4(PerPassConstantBuffer_0.f4Jitter.xyyx * vec4(1.000000, -1.000000, -0.707107, 0.000000)).xyz;\n" +" Temp[4].xy = vec4(Temp[1].zzzz * Temp[3].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[4].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[5].z = (textureLod(g_t0, Temp[4].xyz, 0.000000).yzxw).z;\n" +" Temp[4].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[4].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[5].xy = vec4(Temp[5].zzzz * Temp[4].xyxx).xy;\n" +" Temp[1].w = Temp[0].z * 0.050000 + Temp[1].z;\n" +" Temp[4].xyz = vec4(-Temp[2].xyzx + Temp[5].xyzx).xyz;\n" +" Temp[2].w = vec4(dot((Temp[4].xyzx).xyz, (Temp[4].xyzx).xyz)).w;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].xyzx).xyz)).w;\n" +" Temp[4].x = vec4(inversesqrt(Temp[2].w)).x;\n" +" Temp[3].w = Temp[3].w * Temp[4].x + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[2].w = Temp[2].w * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[2].w = clamp(Temp[2].w, 0.0, 1.0);\n" +" Temp[4].xy = vec4(Temp[3].xyxx * Temp[1].wwww).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[4].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[5].z = (textureLod(g_t0, Temp[4].xyz, 0.000000).yzxw).z;\n" +" Temp[4].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[4].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[5].xy = vec4(Temp[5].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].x = Temp[0].z * 0.050000 + Temp[1].w;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[5].xxyz).yzw;\n" +" Temp[5].x = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).x;\n" +" Temp[4].y = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[4].z = vec4(inversesqrt(Temp[5].x)).z;\n" +" Temp[4].y = Temp[4].y * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[4].y = clamp(Temp[4].y, 0.0, 1.0);\n" +" Temp[4].z = Temp[5].x * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[4].z = clamp(Temp[4].z, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[3].xyxx * Temp[4].xxxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[0].z = Temp[0].z * 0.050000 + Temp[4].x;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[4].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(dot((Temp[0].xywx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[5].y = vec4(inversesqrt(Temp[4].w)).y;\n" +" Temp[5].x = Temp[5].x * Temp[5].y + -GlobalConstantBuffer_8;\n" +" Temp[5].x = clamp(Temp[5].x, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[5].x;\n" +" Temp[4].y = Temp[4].y * Temp[4].z + Temp[4].w;\n" +" Temp[3].xy = vec4(Temp[3].xyxx * Temp[0].zzzz).xy;\n" +" Temp[3].xy = vec4(roundEven(Temp[3].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[3].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[3].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[3].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].x = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[3].y = vec4(dot((Temp[0].xywx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[4].z = vec4(inversesqrt(Temp[3].x)).z;\n" +" Temp[3].y = Temp[3].y * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].x * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].x = clamp(Temp[3].x, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].y * Temp[3].x + Temp[4].y;\n" +" Temp[4].yz = vec4(PerPassConstantBuffer_0.f4Jitter.xxyx * vec4(0.000000, 0.707107, 0.707107, 0.000000)).yz;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].z;\n" +" Temp[3].y = Temp[4].y + Temp[4].z;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[5].zw = vec4(Temp[1].zzzz * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[4].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].y)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * Temp[4].w;\n" +" Temp[2].w = Temp[3].w * Temp[2].w + Temp[3].y;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[3].ywyy).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[3].ywyy).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[3].ywyy).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(inversesqrt(Temp[3].y)).w;\n" +" Temp[3].w = Temp[3].w * Temp[4].w + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[4].z;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.y * -0.707107 + Temp[4].y;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = -PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.y * -0.707107;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[3].y;\n" +" Temp[3].y = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(-0.707107, -0.707107, 0.000000, 0.000000)).xy)).y;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.000000 + PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].y = PerPassConstantBuffer_0.f4Jitter.y * 0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yw = vec4(Temp[1].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[2].w = Temp[3].w * Temp[3].y + Temp[2].w;\n" +" Temp[3].yw = vec4(Temp[1].wwww * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[4].xxxx * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[6].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[3].yw = vec4(Temp[0].zzzz * Temp[5].xxxy).yw;\n" +" Temp[3].yw = vec4(roundEven(Temp[3].yyyw)).yw;\n" +" Temp[5].xy = vec4(Temp[3].ywyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).wyzx).w;\n" +" Temp[3].yw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).yw;\n" +" Temp[4].yz = vec4(Temp[4].wwww * Temp[3].yywy).yz;\n" +" Temp[4].yzw = vec4(-Temp[2].xxyz + Temp[4].yyzw).yzw;\n" +" Temp[3].y = vec4(dot((Temp[4].yzwy).xyz, (Temp[4].yzwy).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[0].xywx).xyz, (Temp[4].yzwy).xyz)).w;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].y)).y;\n" +" Temp[3].w = Temp[3].w * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[3].y = Temp[3].y * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[3].x = Temp[3].w * Temp[3].y + Temp[3].x;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[3].z;\n" +" Temp[3].y = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(0.707107, -0.707107, 0.000000, 0.000000)).xy)).y;\n" +" Temp[5].y = vec4(-Temp[3].y).y;\n" +" Temp[3].yz = vec4(Temp[1].zzzz * Temp[5].xxyx).yz;\n" +" Temp[3].yz = vec4(roundEven(Temp[3].yyzy)).yz;\n" +" Temp[6].xy = vec4(Temp[3].yzyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[3].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[4].yz = vec4(GlobalConstantBuffer_3.xyxx.xxyx * Temp[6].xxyx + GlobalConstantBuffer_4.xxxy.zzwz).yz;\n" +" Temp[3].yz = vec4(Temp[3].wwww * Temp[4].yyzy).yz;\n" +" Temp[3].yzw = vec4(-Temp[2].xxyz + Temp[3].yyzw).yzw;\n" +" Temp[1].z = vec4(dot((Temp[3].yzwy).xyz, (Temp[3].yzwy).xyz)).z;\n" +" Temp[3].y = vec4(dot((Temp[0].xywx).xyz, (Temp[3].yzwy).xyz)).y;\n" +" Temp[3].z = vec4(inversesqrt(Temp[1].z)).z;\n" +" Temp[3].y = Temp[3].y * Temp[3].z + -GlobalConstantBuffer_8;\n" +" Temp[3].y = clamp(Temp[3].y, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[1].z = Temp[3].y * Temp[1].z + Temp[2].w;\n" +" Temp[3].yz = vec4(Temp[1].wwww * Temp[5].xxyx).yz;\n" +" Temp[3].yz = vec4(roundEven(Temp[3].yyzy)).yz;\n" +" Temp[6].xy = vec4(Temp[3].yzyy * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[3].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).wyzx).w;\n" +" Temp[4].yz = vec4(GlobalConstantBuffer_3.xyxx.xxyx * Temp[6].xxyx + GlobalConstantBuffer_4.xxxy.zzwz).yz;\n" +" Temp[3].yz = vec4(Temp[3].wwww * Temp[4].yyzy).yz;\n" +" Temp[3].yzw = vec4(-Temp[2].xxyz + Temp[3].yyzw).yzw;\n" +" Temp[1].w = vec4(dot((Temp[3].yzwy).xyz, (Temp[3].yzwy).xyz)).w;\n" +" Temp[2].w = vec4(dot((Temp[0].xywx).xyz, (Temp[3].yzwy).xyz)).w;\n" +" Temp[3].y = vec4(inversesqrt(Temp[1].w)).y;\n" +" Temp[2].w = Temp[2].w * Temp[3].y + -GlobalConstantBuffer_8;\n" +" Temp[2].w = clamp(Temp[2].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[1].w * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[2].w * Temp[1].w + Temp[3].x;\n" +" Temp[3].xy = vec4(Temp[4].xxxx * Temp[5].xyxx).xy;\n" +" Temp[3].xy = vec4(roundEven(Temp[3].xyxx)).xy;\n" +" Temp[3].xy = vec4(Temp[3].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[3].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[3].xyz, 0.000000).yzxw).z;\n" +" Temp[3].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[3].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[3].xyxx).xy;\n" +" Temp[3].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[2].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[3].xyzx).xyz)).w;\n" +" Temp[3].x = vec4(dot((Temp[0].xywx).xyz, (Temp[3].xyzx).xyz)).x;\n" +" Temp[3].y = vec4(inversesqrt(Temp[2].w)).y;\n" +" Temp[3].x = Temp[3].x * Temp[3].y + -GlobalConstantBuffer_8;\n" +" Temp[3].x = clamp(Temp[3].x, 0.0, 1.0);\n" +" Temp[2].w = Temp[2].w * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[2].w = clamp(Temp[2].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[3].x * Temp[2].w + Temp[1].w;\n" +" Temp[3].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[3].xy = vec4(roundEven(Temp[3].xyxx)).xy;\n" +" Temp[3].xy = vec4(Temp[3].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[3].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[3].xyz, 0.000000).yzxw).z;\n" +" Temp[1].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[3].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[1].xyxx).xy;\n" +" Temp[2].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxz).xyw;\n" +" Temp[0].z = vec4(dot((Temp[2].xywx).xyz, (Temp[2].xywx).xyz)).z;\n" +" Temp[0].x = vec4(dot((Temp[0].xywx).xyz, (Temp[2].xywx).xyz)).x;\n" +" Temp[0].y = vec4(inversesqrt(Temp[0].z)).y;\n" +" Temp[0].x = Temp[0].x * Temp[0].y + -GlobalConstantBuffer_8;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].y = Temp[0].z * GlobalConstantBuffer_7 + 1.000000;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].x = Temp[0].x * Temp[0].y + Temp[1].w;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_10;\n" +" Temp[0].x = Temp[1].z * GlobalConstantBuffer_9 + Temp[0].x;\n" +" Temp[0].x = Temp[0].x * 0.031250;\n" +" Temp[0].y = Temp[2].z * GlobalConstantBuffer_22 + 1.000000;\n" +" Temp[0].y = Temp[0].y * GlobalConstantBuffer_23;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].x = vec4(dot((Temp[0].xxxx).xy, (Temp[0].yyyy).xy)).x;\n" +" Output0.x = -Temp[0].x + 1.000000;\n" +" Output0.x = clamp(Output0.x, 0.0, 1.0);\n" +" return;\n" +"}\n" +; +static const char* g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_0_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"struct PerPassConstantBuffer_0_Type {\n" +" vec4 f4Jitter;\n" +" vec2 f2Offset;\n" +" float fSliceIndex;\n" +" uint uSliceIndex;\n" +"};\n" +"uniform PerPassConstantBuffer {\n" +" PerPassConstantBuffer_0_Type PerPassConstantBuffer_0;\n" +"};\n" +"uniform sampler2DArray g_t0;\n" +"uniform sampler2D g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[8];\n" +"ivec4 Temp_int[8];\n" +"uvec4 Temp_uint[8];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(floor(Input0.xyxx)).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(4.000000, 4.000000, 0.000000, 0.000000) + PerPassConstantBuffer_0.f2Offset.xyxx.xyxx).xy;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_1.xyxx.xxxy).zw;\n" +" Temp[1].xy = vec4(Temp[0].zwzz * vec4(0.250000, 0.250000, 0.000000, 0.000000)).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[2].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[0].z = GlobalConstantBuffer_5 / Temp[2].z;\n" +" Temp[0].w = GlobalConstantBuffer_24 / Temp[0].z;\n" +" Temp[0].w = vec4(max(Temp[0].w, 1.000000)).w;\n" +" Temp[0].z = Temp[0].w * Temp[0].z;\n" +" Temp_uint[1].z = ((Temp[0].z)< (1.000000)) ? 0xFFFFFFFFu : 0u;\n" +" if((Temp_uint[1].z)!=0u){\n" +" Output0.x = vec4(1.000000).x;\n" +" return;\n" +" //ENDIF\n" +" }\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[1].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[2].xy = vec4(Temp[2].zzzz * Temp[1].zwzz).xy;\n" +" Temp_int[3].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[3].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[3].xyz = texelFetch(g_t1, ivec2((Temp_int[3]).xy), 0).xyz;\n" +" Temp[3].xyz = vec4(Temp[3].xyzx * vec4(2.000000, 2.000000, 2.000000, 0.000000) + vec4(-1.000000, -1.000000, -1.000000, 0.000000)).xyz;\n" +" Temp[0].x = Temp[0].w * Temp[0].w;\n" +" Temp[0].x = vec4(vec4(1.000000, 1.000000, 1.000000, 1.000000) / Temp[0].x).x;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_7;\n" +" Temp[0].y = Temp[0].z * 0.050000;\n" +" Temp[0].y = PerPassConstantBuffer_0.f4Jitter.z * Temp[0].y + 1.000000;\n" +" Temp[4].xyz = vec4(PerPassConstantBuffer_0.f4Jitter.xyyx * vec4(1.000000, -1.000000, -0.707107, 0.000000)).xyz;\n" +" Temp[1].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].w = Temp[0].z * 0.050000 + Temp[0].y;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[0].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[2].w = Temp[0].z * 0.050000 + Temp[0].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[2].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[0].z = Temp[0].z * 0.050000 + Temp[2].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[5].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[5].y = vec4(inversesqrt(Temp[5].w)).y;\n" +" Temp[5].x = Temp[5].x * Temp[5].y + -GlobalConstantBuffer_8;\n" +" Temp[5].x = clamp(Temp[5].x, 0.0, 1.0);\n" +" Temp[5].y = Temp[5].w * Temp[0].x + 1.000000;\n" +" Temp[5].y = clamp(Temp[5].y, 0.0, 1.0);\n" +" Temp[5].x = Temp[5].y * Temp[5].x;\n" +" Temp[3].w = Temp[4].w * Temp[3].w + Temp[5].x;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * Temp[0].zzzz).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[5].x = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[5].x)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[4].y = Temp[5].x * Temp[0].x + 1.000000;\n" +" Temp[4].y = clamp(Temp[4].y, 0.0, 1.0);\n" +" Temp[3].w = Temp[4].x * Temp[4].y + Temp[3].w;\n" +" Temp[4].xy = vec4(PerPassConstantBuffer_0.f4Jitter.xyxx * vec4(0.707107, 0.707107, 0.000000, 0.000000)).xy;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].y;\n" +" Temp[4].w = Temp[4].x + Temp[4].y;\n" +" Temp[5].y = vec4(-Temp[4].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[4].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).z;\n" +" Temp[5].w = vec4(inversesqrt(Temp[4].w)).w;\n" +" Temp[5].z = Temp[5].z * Temp[5].w + -GlobalConstantBuffer_8;\n" +" Temp[5].z = clamp(Temp[5].z, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[0].x + 1.000000;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[5].z;\n" +" Temp[1].z = Temp[1].w * Temp[1].z + Temp[4].w;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[1].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[1].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[1].w * Temp[0].x + 1.000000;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[1].w + Temp[3].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[4].y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107 + Temp[4].x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[4].xy = vec4(Temp[0].yyyy * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].x * Temp[3].w + Temp[1].z;\n" +" Temp[4].xy = vec4(Temp[0].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[2].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = -PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[3].w;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(-0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.000000 + PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * 0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].z;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[4].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].z = vec4(inversesqrt(Temp[0].y)).z;\n" +" Temp[3].w = Temp[3].w * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[0].y = Temp[0].y * Temp[0].x + 1.000000;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].y = Temp[3].w * Temp[0].y + Temp[1].z;\n" +" Temp[4].zw = vec4(Temp[0].wwww * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[1].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[3].w = vec4(inversesqrt(Temp[0].w)).w;\n" +" Temp[1].z = Temp[1].z * Temp[3].w + -GlobalConstantBuffer_8;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[0].w * Temp[0].x + 1.000000;\n" +" Temp[0].w = clamp(Temp[0].w, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].z * Temp[0].w + Temp[1].w;\n" +" Temp[1].zw = vec4(Temp[2].wwww * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].w * Temp[1].z + Temp[0].w;\n" +" Temp[1].zw = vec4(Temp[0].zzzz * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[1].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[1].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[1].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[1].xyxx).xy;\n" +" Temp[1].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[0].z = vec4(dot((Temp[1].xyzx).xyz, (Temp[1].xyzx).xyz)).z;\n" +" Temp[1].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[1].xyzx).xyz)).x;\n" +" Temp[1].y = vec4(inversesqrt(Temp[0].z)).y;\n" +" Temp[1].x = Temp[1].x * Temp[1].y + -GlobalConstantBuffer_8;\n" +" Temp[1].x = clamp(Temp[1].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[0].z * Temp[0].x + 1.000000;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[1].x * Temp[0].x + Temp[0].w;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_10;\n" +" Temp[0].x = Temp[0].y * GlobalConstantBuffer_9 + Temp[0].x;\n" +" Output0.x = -Temp[0].x * 0.062500 + 1.000000;\n" +" Output0.x = clamp(Output0.x, 0.0, 1.0);\n" +" return;\n" +"}\n" +; +static const char* g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_1_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"struct PerPassConstantBuffer_0_Type {\n" +" vec4 f4Jitter;\n" +" vec2 f2Offset;\n" +" float fSliceIndex;\n" +" uint uSliceIndex;\n" +"};\n" +"uniform PerPassConstantBuffer {\n" +" PerPassConstantBuffer_0_Type PerPassConstantBuffer_0;\n" +"};\n" +"uniform sampler2DArray g_t0;\n" +"uniform sampler2D g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[8];\n" +"ivec4 Temp_int[8];\n" +"uvec4 Temp_uint[8];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(floor(Input0.xyxx)).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(4.000000, 4.000000, 0.000000, 0.000000) + PerPassConstantBuffer_0.f2Offset.xyxx.xyxx).xy;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_1.xyxx.xxxy).zw;\n" +" Temp[1].xy = vec4(Temp[0].zwzz * vec4(0.250000, 0.250000, 0.000000, 0.000000)).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[2].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[0].z = GlobalConstantBuffer_5 / Temp[2].z;\n" +" Temp[0].w = GlobalConstantBuffer_24 / Temp[0].z;\n" +" Temp[0].w = vec4(max(Temp[0].w, 1.000000)).w;\n" +" Temp[0].z = Temp[0].w * Temp[0].z;\n" +" Temp_uint[1].z = ((Temp[0].z)< (1.000000)) ? 0xFFFFFFFFu : 0u;\n" +" if((Temp_uint[1].z)!=0u){\n" +" Output0.x = vec4(1.000000).x;\n" +" return;\n" +" //ENDIF\n" +" }\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[1].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[2].xy = vec4(Temp[2].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx + GlobalConstantBuffer_21.xyxx.xyxx).xy;\n" +" Temp_int[3].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[3].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[3].xyz = texelFetch(g_t1, ivec2((Temp_int[3]).xy), 0).xyz;\n" +" Temp[3].xyz = vec4(Temp[3].xyzx * GlobalConstantBuffer_28 + GlobalConstantBuffer_29).xyz;\n" +" Temp[4].xyz = vec4(Temp[3].yyyy * GlobalConstantBuffer_27[1].xyzx).xyz;\n" +" Temp[3].xyw = vec4(Temp[3].xxxx * GlobalConstantBuffer_27[0].xyxz + Temp[4].xyxz).xyw;\n" +" Temp[3].xyz = vec4(Temp[3].zzzz * GlobalConstantBuffer_27[2].xyzx + Temp[3].xywx).xyz;\n" +" Temp[0].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[3].xyzx).xyz)).x;\n" +" Temp[0].x = vec4(inversesqrt(Temp[0].x)).x;\n" +" Temp[3].xyz = vec4(Temp[0].xxxx * Temp[3].xyzx).xyz;\n" +" Temp[0].x = Temp[0].w * Temp[0].w;\n" +" Temp[0].x = vec4(vec4(1.000000, 1.000000, 1.000000, 1.000000) / Temp[0].x).x;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_7;\n" +" Temp[0].y = Temp[0].z * 0.050000;\n" +" Temp[0].y = PerPassConstantBuffer_0.f4Jitter.z * Temp[0].y + 1.000000;\n" +" Temp[4].xyz = vec4(PerPassConstantBuffer_0.f4Jitter.xyyx * vec4(1.000000, -1.000000, -0.707107, 0.000000)).xyz;\n" +" Temp[1].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].w = Temp[0].z * 0.050000 + Temp[0].y;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[0].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[2].w = Temp[0].z * 0.050000 + Temp[0].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[2].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[0].z = Temp[0].z * 0.050000 + Temp[2].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[5].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[5].y = vec4(inversesqrt(Temp[5].w)).y;\n" +" Temp[5].x = Temp[5].x * Temp[5].y + -GlobalConstantBuffer_8;\n" +" Temp[5].x = clamp(Temp[5].x, 0.0, 1.0);\n" +" Temp[5].y = Temp[5].w * Temp[0].x + 1.000000;\n" +" Temp[5].y = clamp(Temp[5].y, 0.0, 1.0);\n" +" Temp[5].x = Temp[5].y * Temp[5].x;\n" +" Temp[3].w = Temp[4].w * Temp[3].w + Temp[5].x;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * Temp[0].zzzz).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[5].x = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[5].x)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[4].y = Temp[5].x * Temp[0].x + 1.000000;\n" +" Temp[4].y = clamp(Temp[4].y, 0.0, 1.0);\n" +" Temp[3].w = Temp[4].x * Temp[4].y + Temp[3].w;\n" +" Temp[4].xy = vec4(PerPassConstantBuffer_0.f4Jitter.xyxx * vec4(0.707107, 0.707107, 0.000000, 0.000000)).xy;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].y;\n" +" Temp[4].w = Temp[4].x + Temp[4].y;\n" +" Temp[5].y = vec4(-Temp[4].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[4].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).z;\n" +" Temp[5].w = vec4(inversesqrt(Temp[4].w)).w;\n" +" Temp[5].z = Temp[5].z * Temp[5].w + -GlobalConstantBuffer_8;\n" +" Temp[5].z = clamp(Temp[5].z, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[0].x + 1.000000;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[5].z;\n" +" Temp[1].z = Temp[1].w * Temp[1].z + Temp[4].w;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[1].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[1].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[1].w * Temp[0].x + 1.000000;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[1].w + Temp[3].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[4].y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107 + Temp[4].x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[4].xy = vec4(Temp[0].yyyy * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].x * Temp[3].w + Temp[1].z;\n" +" Temp[4].xy = vec4(Temp[0].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[2].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = -PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[3].w;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(-0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.000000 + PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * 0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].z;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[4].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].z = vec4(inversesqrt(Temp[0].y)).z;\n" +" Temp[3].w = Temp[3].w * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[0].y = Temp[0].y * Temp[0].x + 1.000000;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].y = Temp[3].w * Temp[0].y + Temp[1].z;\n" +" Temp[4].zw = vec4(Temp[0].wwww * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[1].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[3].w = vec4(inversesqrt(Temp[0].w)).w;\n" +" Temp[1].z = Temp[1].z * Temp[3].w + -GlobalConstantBuffer_8;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[0].w * Temp[0].x + 1.000000;\n" +" Temp[0].w = clamp(Temp[0].w, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].z * Temp[0].w + Temp[1].w;\n" +" Temp[1].zw = vec4(Temp[2].wwww * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].w * Temp[1].z + Temp[0].w;\n" +" Temp[1].zw = vec4(Temp[0].zzzz * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[1].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[1].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[1].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[1].xyxx).xy;\n" +" Temp[1].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[0].z = vec4(dot((Temp[1].xyzx).xyz, (Temp[1].xyzx).xyz)).z;\n" +" Temp[1].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[1].xyzx).xyz)).x;\n" +" Temp[1].y = vec4(inversesqrt(Temp[0].z)).y;\n" +" Temp[1].x = Temp[1].x * Temp[1].y + -GlobalConstantBuffer_8;\n" +" Temp[1].x = clamp(Temp[1].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[0].z * Temp[0].x + 1.000000;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[1].x * Temp[0].x + Temp[0].w;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_10;\n" +" Temp[0].x = Temp[0].y * GlobalConstantBuffer_9 + Temp[0].x;\n" +" Output0.x = -Temp[0].x * 0.062500 + 1.000000;\n" +" Output0.x = clamp(Output0.x, 0.0, 1.0);\n" +" return;\n" +"}\n" +; +static const char* g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_2_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"struct PerPassConstantBuffer_0_Type {\n" +" vec4 f4Jitter;\n" +" vec2 f2Offset;\n" +" float fSliceIndex;\n" +" uint uSliceIndex;\n" +"};\n" +"uniform PerPassConstantBuffer {\n" +" PerPassConstantBuffer_0_Type PerPassConstantBuffer_0;\n" +"};\n" +"uniform sampler2DArray g_t0;\n" +"uniform sampler2DMS g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[8];\n" +"ivec4 Temp_int[8];\n" +"uvec4 Temp_uint[8];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(floor(Input0.xyxx)).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(4.000000, 4.000000, 0.000000, 0.000000) + PerPassConstantBuffer_0.f2Offset.xyxx.xyxx).xy;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_1.xyxx.xxxy).zw;\n" +" Temp[1].xy = vec4(Temp[0].zwzz * vec4(0.250000, 0.250000, 0.000000, 0.000000)).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[2].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[0].z = GlobalConstantBuffer_5 / Temp[2].z;\n" +" Temp[0].w = GlobalConstantBuffer_24 / Temp[0].z;\n" +" Temp[0].w = vec4(max(Temp[0].w, 1.000000)).w;\n" +" Temp[0].z = Temp[0].w * Temp[0].z;\n" +" Temp_uint[1].z = ((Temp[0].z)< (1.000000)) ? 0xFFFFFFFFu : 0u;\n" +" if((Temp_uint[1].z)!=0u){\n" +" Output0.x = vec4(1.000000).x;\n" +" return;\n" +" //ENDIF\n" +" }\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[1].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[2].xy = vec4(Temp[2].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx + GlobalConstantBuffer_21.xyxx.xyxx).xy;\n" +" Temp_int[3].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[3].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[3].xyz = texelFetch(g_t1, ivec2((Temp_int[3]).xy), 0).xyz;\n" +" Temp[3].xyz = vec4(Temp[3].xyzx * GlobalConstantBuffer_28 + GlobalConstantBuffer_29).xyz;\n" +" Temp[4].xyz = vec4(Temp[3].yyyy * GlobalConstantBuffer_27[1].xyzx).xyz;\n" +" Temp[3].xyw = vec4(Temp[3].xxxx * GlobalConstantBuffer_27[0].xyxz + Temp[4].xyxz).xyw;\n" +" Temp[3].xyz = vec4(Temp[3].zzzz * GlobalConstantBuffer_27[2].xyzx + Temp[3].xywx).xyz;\n" +" Temp[0].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[3].xyzx).xyz)).x;\n" +" Temp[0].x = vec4(inversesqrt(Temp[0].x)).x;\n" +" Temp[3].xyz = vec4(Temp[0].xxxx * Temp[3].xyzx).xyz;\n" +" Temp[0].x = Temp[0].w * Temp[0].w;\n" +" Temp[0].x = vec4(vec4(1.000000, 1.000000, 1.000000, 1.000000) / Temp[0].x).x;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_7;\n" +" Temp[0].y = Temp[0].z * 0.050000;\n" +" Temp[0].y = PerPassConstantBuffer_0.f4Jitter.z * Temp[0].y + 1.000000;\n" +" Temp[4].xyz = vec4(PerPassConstantBuffer_0.f4Jitter.xyyx * vec4(1.000000, -1.000000, -0.707107, 0.000000)).xyz;\n" +" Temp[1].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].w = Temp[0].z * 0.050000 + Temp[0].y;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[0].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[2].w = Temp[0].z * 0.050000 + Temp[0].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[2].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[0].z = Temp[0].z * 0.050000 + Temp[2].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[5].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[5].y = vec4(inversesqrt(Temp[5].w)).y;\n" +" Temp[5].x = Temp[5].x * Temp[5].y + -GlobalConstantBuffer_8;\n" +" Temp[5].x = clamp(Temp[5].x, 0.0, 1.0);\n" +" Temp[5].y = Temp[5].w * Temp[0].x + 1.000000;\n" +" Temp[5].y = clamp(Temp[5].y, 0.0, 1.0);\n" +" Temp[5].x = Temp[5].y * Temp[5].x;\n" +" Temp[3].w = Temp[4].w * Temp[3].w + Temp[5].x;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * Temp[0].zzzz).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[5].x = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[5].x)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[4].y = Temp[5].x * Temp[0].x + 1.000000;\n" +" Temp[4].y = clamp(Temp[4].y, 0.0, 1.0);\n" +" Temp[3].w = Temp[4].x * Temp[4].y + Temp[3].w;\n" +" Temp[4].xy = vec4(PerPassConstantBuffer_0.f4Jitter.xyxx * vec4(0.707107, 0.707107, 0.000000, 0.000000)).xy;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].y;\n" +" Temp[4].w = Temp[4].x + Temp[4].y;\n" +" Temp[5].y = vec4(-Temp[4].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[4].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).z;\n" +" Temp[5].w = vec4(inversesqrt(Temp[4].w)).w;\n" +" Temp[5].z = Temp[5].z * Temp[5].w + -GlobalConstantBuffer_8;\n" +" Temp[5].z = clamp(Temp[5].z, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[0].x + 1.000000;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[5].z;\n" +" Temp[1].z = Temp[1].w * Temp[1].z + Temp[4].w;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[1].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[1].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[1].w * Temp[0].x + 1.000000;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[1].w + Temp[3].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[4].y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107 + Temp[4].x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[4].xy = vec4(Temp[0].yyyy * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].x * Temp[3].w + Temp[1].z;\n" +" Temp[4].xy = vec4(Temp[0].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[2].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = -PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[3].w;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(-0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.000000 + PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * 0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].z;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[4].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].z = vec4(inversesqrt(Temp[0].y)).z;\n" +" Temp[3].w = Temp[3].w * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[0].y = Temp[0].y * Temp[0].x + 1.000000;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].y = Temp[3].w * Temp[0].y + Temp[1].z;\n" +" Temp[4].zw = vec4(Temp[0].wwww * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[1].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[3].w = vec4(inversesqrt(Temp[0].w)).w;\n" +" Temp[1].z = Temp[1].z * Temp[3].w + -GlobalConstantBuffer_8;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[0].w * Temp[0].x + 1.000000;\n" +" Temp[0].w = clamp(Temp[0].w, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].z * Temp[0].w + Temp[1].w;\n" +" Temp[1].zw = vec4(Temp[2].wwww * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].w * Temp[1].z + Temp[0].w;\n" +" Temp[1].zw = vec4(Temp[0].zzzz * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[1].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[1].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[1].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[1].xyxx).xy;\n" +" Temp[1].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[0].z = vec4(dot((Temp[1].xyzx).xyz, (Temp[1].xyzx).xyz)).z;\n" +" Temp[1].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[1].xyzx).xyz)).x;\n" +" Temp[1].y = vec4(inversesqrt(Temp[0].z)).y;\n" +" Temp[1].x = Temp[1].x * Temp[1].y + -GlobalConstantBuffer_8;\n" +" Temp[1].x = clamp(Temp[1].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[0].z * Temp[0].x + 1.000000;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[1].x * Temp[0].x + Temp[0].w;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_10;\n" +" Temp[0].x = Temp[0].y * GlobalConstantBuffer_9 + Temp[0].x;\n" +" Output0.x = -Temp[0].x * 0.062500 + 1.000000;\n" +" Output0.x = clamp(Output0.x, 0.0, 1.0);\n" +" return;\n" +"}\n" +; +static const char* g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_0_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"struct PerPassConstantBuffer_0_Type {\n" +" vec4 f4Jitter;\n" +" vec2 f2Offset;\n" +" float fSliceIndex;\n" +" uint uSliceIndex;\n" +"};\n" +"uniform PerPassConstantBuffer {\n" +" PerPassConstantBuffer_0_Type PerPassConstantBuffer_0;\n" +"};\n" +"uniform sampler2DArray g_t0;\n" +"uniform sampler2D g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[8];\n" +"ivec4 Temp_int[8];\n" +"uvec4 Temp_uint[8];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(floor(Input0.xyxx)).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(4.000000, 4.000000, 0.000000, 0.000000) + PerPassConstantBuffer_0.f2Offset.xyxx.xyxx).xy;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_1.xyxx.xxxy).zw;\n" +" Temp[1].xy = vec4(Temp[0].zwzz * vec4(0.250000, 0.250000, 0.000000, 0.000000)).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[2].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[0].z = GlobalConstantBuffer_5 / Temp[2].z;\n" +" Temp[0].w = GlobalConstantBuffer_24 / Temp[0].z;\n" +" Temp[0].w = vec4(max(Temp[0].w, 1.000000)).w;\n" +" Temp[0].z = Temp[0].w * Temp[0].z;\n" +" Temp_uint[1].z = ((Temp[0].z)< (1.000000)) ? 0xFFFFFFFFu : 0u;\n" +" if((Temp_uint[1].z)!=0u){\n" +" Output0.x = vec4(1.000000).x;\n" +" return;\n" +" //ENDIF\n" +" }\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[1].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[2].xy = vec4(Temp[2].zzzz * Temp[1].zwzz).xy;\n" +" Temp_int[3].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[3].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[3].xyz = texelFetch(g_t1, ivec2((Temp_int[3]).xy), 0).xyz;\n" +" Temp[3].xyz = vec4(Temp[3].xyzx * vec4(2.000000, 2.000000, 2.000000, 0.000000) + vec4(-1.000000, -1.000000, -1.000000, 0.000000)).xyz;\n" +" Temp[0].x = Temp[0].w * Temp[0].w;\n" +" Temp[0].x = vec4(vec4(1.000000, 1.000000, 1.000000, 1.000000) / Temp[0].x).x;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_7;\n" +" Temp[0].y = Temp[0].z * 0.050000;\n" +" Temp[0].y = PerPassConstantBuffer_0.f4Jitter.z * Temp[0].y + 1.000000;\n" +" Temp[4].xyz = vec4(PerPassConstantBuffer_0.f4Jitter.xyyx * vec4(1.000000, -1.000000, -0.707107, 0.000000)).xyz;\n" +" Temp[1].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].w = Temp[0].z * 0.050000 + Temp[0].y;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[0].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[2].w = Temp[0].z * 0.050000 + Temp[0].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[2].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[0].z = Temp[0].z * 0.050000 + Temp[2].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[5].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[5].y = vec4(inversesqrt(Temp[5].w)).y;\n" +" Temp[5].x = Temp[5].x * Temp[5].y + -GlobalConstantBuffer_8;\n" +" Temp[5].x = clamp(Temp[5].x, 0.0, 1.0);\n" +" Temp[5].y = Temp[5].w * Temp[0].x + 1.000000;\n" +" Temp[5].y = clamp(Temp[5].y, 0.0, 1.0);\n" +" Temp[5].x = Temp[5].y * Temp[5].x;\n" +" Temp[3].w = Temp[4].w * Temp[3].w + Temp[5].x;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * Temp[0].zzzz).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[5].x = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[5].x)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[4].y = Temp[5].x * Temp[0].x + 1.000000;\n" +" Temp[4].y = clamp(Temp[4].y, 0.0, 1.0);\n" +" Temp[3].w = Temp[4].x * Temp[4].y + Temp[3].w;\n" +" Temp[4].xy = vec4(PerPassConstantBuffer_0.f4Jitter.xyxx * vec4(0.707107, 0.707107, 0.000000, 0.000000)).xy;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].y;\n" +" Temp[4].w = Temp[4].x + Temp[4].y;\n" +" Temp[5].y = vec4(-Temp[4].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[4].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).z;\n" +" Temp[5].w = vec4(inversesqrt(Temp[4].w)).w;\n" +" Temp[5].z = Temp[5].z * Temp[5].w + -GlobalConstantBuffer_8;\n" +" Temp[5].z = clamp(Temp[5].z, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[0].x + 1.000000;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[5].z;\n" +" Temp[1].z = Temp[1].w * Temp[1].z + Temp[4].w;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[1].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[1].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[1].w * Temp[0].x + 1.000000;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[1].w + Temp[3].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[4].y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107 + Temp[4].x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[4].xy = vec4(Temp[0].yyyy * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].x * Temp[3].w + Temp[1].z;\n" +" Temp[4].xy = vec4(Temp[0].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[2].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = -PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[3].w;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(-0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.000000 + PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * 0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].z;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[4].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].z = vec4(inversesqrt(Temp[0].y)).z;\n" +" Temp[3].w = Temp[3].w * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[0].y = Temp[0].y * Temp[0].x + 1.000000;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].y = Temp[3].w * Temp[0].y + Temp[1].z;\n" +" Temp[4].zw = vec4(Temp[0].wwww * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[1].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[3].w = vec4(inversesqrt(Temp[0].w)).w;\n" +" Temp[1].z = Temp[1].z * Temp[3].w + -GlobalConstantBuffer_8;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[0].w * Temp[0].x + 1.000000;\n" +" Temp[0].w = clamp(Temp[0].w, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].z * Temp[0].w + Temp[1].w;\n" +" Temp[1].zw = vec4(Temp[2].wwww * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].w * Temp[1].z + Temp[0].w;\n" +" Temp[1].zw = vec4(Temp[0].zzzz * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[1].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[1].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[1].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[1].xyxx).xy;\n" +" Temp[1].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[0].z = vec4(dot((Temp[1].xyzx).xyz, (Temp[1].xyzx).xyz)).z;\n" +" Temp[1].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[1].xyzx).xyz)).x;\n" +" Temp[1].y = vec4(inversesqrt(Temp[0].z)).y;\n" +" Temp[1].x = Temp[1].x * Temp[1].y + -GlobalConstantBuffer_8;\n" +" Temp[1].x = clamp(Temp[1].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[0].z * Temp[0].x + 1.000000;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[1].x * Temp[0].x + Temp[0].w;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_10;\n" +" Temp[0].x = Temp[0].y * GlobalConstantBuffer_9 + Temp[0].x;\n" +" Temp[0].x = Temp[0].x * 0.031250;\n" +" Temp[0].y = Temp[2].z * GlobalConstantBuffer_22 + 1.000000;\n" +" Temp[0].y = Temp[0].y * GlobalConstantBuffer_23;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].x = vec4(dot((Temp[0].xxxx).xy, (Temp[0].yyyy).xy)).x;\n" +" Output0.x = -Temp[0].x + 1.000000;\n" +" Output0.x = clamp(Output0.x, 0.0, 1.0);\n" +" return;\n" +"}\n" +; +static const char* g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_1_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"struct PerPassConstantBuffer_0_Type {\n" +" vec4 f4Jitter;\n" +" vec2 f2Offset;\n" +" float fSliceIndex;\n" +" uint uSliceIndex;\n" +"};\n" +"uniform PerPassConstantBuffer {\n" +" PerPassConstantBuffer_0_Type PerPassConstantBuffer_0;\n" +"};\n" +"uniform sampler2DArray g_t0;\n" +"uniform sampler2D g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[8];\n" +"ivec4 Temp_int[8];\n" +"uvec4 Temp_uint[8];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(floor(Input0.xyxx)).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(4.000000, 4.000000, 0.000000, 0.000000) + PerPassConstantBuffer_0.f2Offset.xyxx.xyxx).xy;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_1.xyxx.xxxy).zw;\n" +" Temp[1].xy = vec4(Temp[0].zwzz * vec4(0.250000, 0.250000, 0.000000, 0.000000)).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[2].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[0].z = GlobalConstantBuffer_5 / Temp[2].z;\n" +" Temp[0].w = GlobalConstantBuffer_24 / Temp[0].z;\n" +" Temp[0].w = vec4(max(Temp[0].w, 1.000000)).w;\n" +" Temp[0].z = Temp[0].w * Temp[0].z;\n" +" Temp_uint[1].z = ((Temp[0].z)< (1.000000)) ? 0xFFFFFFFFu : 0u;\n" +" if((Temp_uint[1].z)!=0u){\n" +" Output0.x = vec4(1.000000).x;\n" +" return;\n" +" //ENDIF\n" +" }\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[1].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[2].xy = vec4(Temp[2].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx + GlobalConstantBuffer_21.xyxx.xyxx).xy;\n" +" Temp_int[3].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[3].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[3].xyz = texelFetch(g_t1, ivec2((Temp_int[3]).xy), 0).xyz;\n" +" Temp[3].xyz = vec4(Temp[3].xyzx * GlobalConstantBuffer_28 + GlobalConstantBuffer_29).xyz;\n" +" Temp[4].xyz = vec4(Temp[3].yyyy * GlobalConstantBuffer_27[1].xyzx).xyz;\n" +" Temp[3].xyw = vec4(Temp[3].xxxx * GlobalConstantBuffer_27[0].xyxz + Temp[4].xyxz).xyw;\n" +" Temp[3].xyz = vec4(Temp[3].zzzz * GlobalConstantBuffer_27[2].xyzx + Temp[3].xywx).xyz;\n" +" Temp[0].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[3].xyzx).xyz)).x;\n" +" Temp[0].x = vec4(inversesqrt(Temp[0].x)).x;\n" +" Temp[3].xyz = vec4(Temp[0].xxxx * Temp[3].xyzx).xyz;\n" +" Temp[0].x = Temp[0].w * Temp[0].w;\n" +" Temp[0].x = vec4(vec4(1.000000, 1.000000, 1.000000, 1.000000) / Temp[0].x).x;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_7;\n" +" Temp[0].y = Temp[0].z * 0.050000;\n" +" Temp[0].y = PerPassConstantBuffer_0.f4Jitter.z * Temp[0].y + 1.000000;\n" +" Temp[4].xyz = vec4(PerPassConstantBuffer_0.f4Jitter.xyyx * vec4(1.000000, -1.000000, -0.707107, 0.000000)).xyz;\n" +" Temp[1].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].w = Temp[0].z * 0.050000 + Temp[0].y;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[0].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[2].w = Temp[0].z * 0.050000 + Temp[0].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[2].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[0].z = Temp[0].z * 0.050000 + Temp[2].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[5].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[5].y = vec4(inversesqrt(Temp[5].w)).y;\n" +" Temp[5].x = Temp[5].x * Temp[5].y + -GlobalConstantBuffer_8;\n" +" Temp[5].x = clamp(Temp[5].x, 0.0, 1.0);\n" +" Temp[5].y = Temp[5].w * Temp[0].x + 1.000000;\n" +" Temp[5].y = clamp(Temp[5].y, 0.0, 1.0);\n" +" Temp[5].x = Temp[5].y * Temp[5].x;\n" +" Temp[3].w = Temp[4].w * Temp[3].w + Temp[5].x;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * Temp[0].zzzz).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[5].x = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[5].x)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[4].y = Temp[5].x * Temp[0].x + 1.000000;\n" +" Temp[4].y = clamp(Temp[4].y, 0.0, 1.0);\n" +" Temp[3].w = Temp[4].x * Temp[4].y + Temp[3].w;\n" +" Temp[4].xy = vec4(PerPassConstantBuffer_0.f4Jitter.xyxx * vec4(0.707107, 0.707107, 0.000000, 0.000000)).xy;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].y;\n" +" Temp[4].w = Temp[4].x + Temp[4].y;\n" +" Temp[5].y = vec4(-Temp[4].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[4].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).z;\n" +" Temp[5].w = vec4(inversesqrt(Temp[4].w)).w;\n" +" Temp[5].z = Temp[5].z * Temp[5].w + -GlobalConstantBuffer_8;\n" +" Temp[5].z = clamp(Temp[5].z, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[0].x + 1.000000;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[5].z;\n" +" Temp[1].z = Temp[1].w * Temp[1].z + Temp[4].w;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[1].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[1].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[1].w * Temp[0].x + 1.000000;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[1].w + Temp[3].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[4].y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107 + Temp[4].x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[4].xy = vec4(Temp[0].yyyy * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].x * Temp[3].w + Temp[1].z;\n" +" Temp[4].xy = vec4(Temp[0].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[2].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = -PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[3].w;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(-0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.000000 + PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * 0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].z;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[4].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].z = vec4(inversesqrt(Temp[0].y)).z;\n" +" Temp[3].w = Temp[3].w * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[0].y = Temp[0].y * Temp[0].x + 1.000000;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].y = Temp[3].w * Temp[0].y + Temp[1].z;\n" +" Temp[4].zw = vec4(Temp[0].wwww * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[1].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[3].w = vec4(inversesqrt(Temp[0].w)).w;\n" +" Temp[1].z = Temp[1].z * Temp[3].w + -GlobalConstantBuffer_8;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[0].w * Temp[0].x + 1.000000;\n" +" Temp[0].w = clamp(Temp[0].w, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].z * Temp[0].w + Temp[1].w;\n" +" Temp[1].zw = vec4(Temp[2].wwww * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].w * Temp[1].z + Temp[0].w;\n" +" Temp[1].zw = vec4(Temp[0].zzzz * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[1].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[1].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[1].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[1].xyxx).xy;\n" +" Temp[1].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[0].z = vec4(dot((Temp[1].xyzx).xyz, (Temp[1].xyzx).xyz)).z;\n" +" Temp[1].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[1].xyzx).xyz)).x;\n" +" Temp[1].y = vec4(inversesqrt(Temp[0].z)).y;\n" +" Temp[1].x = Temp[1].x * Temp[1].y + -GlobalConstantBuffer_8;\n" +" Temp[1].x = clamp(Temp[1].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[0].z * Temp[0].x + 1.000000;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[1].x * Temp[0].x + Temp[0].w;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_10;\n" +" Temp[0].x = Temp[0].y * GlobalConstantBuffer_9 + Temp[0].x;\n" +" Temp[0].x = Temp[0].x * 0.031250;\n" +" Temp[0].y = Temp[2].z * GlobalConstantBuffer_22 + 1.000000;\n" +" Temp[0].y = Temp[0].y * GlobalConstantBuffer_23;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].x = vec4(dot((Temp[0].xxxx).xy, (Temp[0].yyyy).xy)).x;\n" +" Output0.x = -Temp[0].x + 1.000000;\n" +" Output0.x = clamp(Output0.x, 0.0, 1.0);\n" +" return;\n" +"}\n" +; +static const char* g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_2_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"struct PerPassConstantBuffer_0_Type {\n" +" vec4 f4Jitter;\n" +" vec2 f2Offset;\n" +" float fSliceIndex;\n" +" uint uSliceIndex;\n" +"};\n" +"uniform PerPassConstantBuffer {\n" +" PerPassConstantBuffer_0_Type PerPassConstantBuffer_0;\n" +"};\n" +"uniform sampler2DArray g_t0;\n" +"uniform sampler2DMS g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[8];\n" +"ivec4 Temp_int[8];\n" +"uvec4 Temp_uint[8];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(floor(Input0.xyxx)).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(4.000000, 4.000000, 0.000000, 0.000000) + PerPassConstantBuffer_0.f2Offset.xyxx.xyxx).xy;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_1.xyxx.xxxy).zw;\n" +" Temp[1].xy = vec4(Temp[0].zwzz * vec4(0.250000, 0.250000, 0.000000, 0.000000)).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[2].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[0].z = GlobalConstantBuffer_5 / Temp[2].z;\n" +" Temp[0].w = GlobalConstantBuffer_24 / Temp[0].z;\n" +" Temp[0].w = vec4(max(Temp[0].w, 1.000000)).w;\n" +" Temp[0].z = Temp[0].w * Temp[0].z;\n" +" Temp_uint[1].z = ((Temp[0].z)< (1.000000)) ? 0xFFFFFFFFu : 0u;\n" +" if((Temp_uint[1].z)!=0u){\n" +" Output0.x = vec4(1.000000).x;\n" +" return;\n" +" //ENDIF\n" +" }\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[1].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[2].xy = vec4(Temp[2].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx + GlobalConstantBuffer_21.xyxx.xyxx).xy;\n" +" Temp_int[3].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[3].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[3].xyz = texelFetch(g_t1, ivec2((Temp_int[3]).xy), 0).xyz;\n" +" Temp[3].xyz = vec4(Temp[3].xyzx * GlobalConstantBuffer_28 + GlobalConstantBuffer_29).xyz;\n" +" Temp[4].xyz = vec4(Temp[3].yyyy * GlobalConstantBuffer_27[1].xyzx).xyz;\n" +" Temp[3].xyw = vec4(Temp[3].xxxx * GlobalConstantBuffer_27[0].xyxz + Temp[4].xyxz).xyw;\n" +" Temp[3].xyz = vec4(Temp[3].zzzz * GlobalConstantBuffer_27[2].xyzx + Temp[3].xywx).xyz;\n" +" Temp[0].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[3].xyzx).xyz)).x;\n" +" Temp[0].x = vec4(inversesqrt(Temp[0].x)).x;\n" +" Temp[3].xyz = vec4(Temp[0].xxxx * Temp[3].xyzx).xyz;\n" +" Temp[0].x = Temp[0].w * Temp[0].w;\n" +" Temp[0].x = vec4(vec4(1.000000, 1.000000, 1.000000, 1.000000) / Temp[0].x).x;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_7;\n" +" Temp[0].y = Temp[0].z * 0.050000;\n" +" Temp[0].y = PerPassConstantBuffer_0.f4Jitter.z * Temp[0].y + 1.000000;\n" +" Temp[4].xyz = vec4(PerPassConstantBuffer_0.f4Jitter.xyyx * vec4(1.000000, -1.000000, -0.707107, 0.000000)).xyz;\n" +" Temp[1].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].w = Temp[0].z * 0.050000 + Temp[0].y;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[0].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[2].w = Temp[0].z * 0.050000 + Temp[0].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[2].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[0].z = Temp[0].z * 0.050000 + Temp[2].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[5].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[5].y = vec4(inversesqrt(Temp[5].w)).y;\n" +" Temp[5].x = Temp[5].x * Temp[5].y + -GlobalConstantBuffer_8;\n" +" Temp[5].x = clamp(Temp[5].x, 0.0, 1.0);\n" +" Temp[5].y = Temp[5].w * Temp[0].x + 1.000000;\n" +" Temp[5].y = clamp(Temp[5].y, 0.0, 1.0);\n" +" Temp[5].x = Temp[5].y * Temp[5].x;\n" +" Temp[3].w = Temp[4].w * Temp[3].w + Temp[5].x;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * Temp[0].zzzz).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[5].x = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[5].x)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[4].y = Temp[5].x * Temp[0].x + 1.000000;\n" +" Temp[4].y = clamp(Temp[4].y, 0.0, 1.0);\n" +" Temp[3].w = Temp[4].x * Temp[4].y + Temp[3].w;\n" +" Temp[4].xy = vec4(PerPassConstantBuffer_0.f4Jitter.xyxx * vec4(0.707107, 0.707107, 0.000000, 0.000000)).xy;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].y;\n" +" Temp[4].w = Temp[4].x + Temp[4].y;\n" +" Temp[5].y = vec4(-Temp[4].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[4].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).z;\n" +" Temp[5].w = vec4(inversesqrt(Temp[4].w)).w;\n" +" Temp[5].z = Temp[5].z * Temp[5].w + -GlobalConstantBuffer_8;\n" +" Temp[5].z = clamp(Temp[5].z, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[0].x + 1.000000;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[5].z;\n" +" Temp[1].z = Temp[1].w * Temp[1].z + Temp[4].w;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[1].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[1].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[1].w * Temp[0].x + 1.000000;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[1].w + Temp[3].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[4].y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107 + Temp[4].x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[4].xy = vec4(Temp[0].yyyy * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].x * Temp[3].w + Temp[1].z;\n" +" Temp[4].xy = vec4(Temp[0].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[2].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = -PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[3].w;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(-0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.000000 + PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * 0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].z;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[4].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].z = vec4(inversesqrt(Temp[0].y)).z;\n" +" Temp[3].w = Temp[3].w * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[0].y = Temp[0].y * Temp[0].x + 1.000000;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].y = Temp[3].w * Temp[0].y + Temp[1].z;\n" +" Temp[4].zw = vec4(Temp[0].wwww * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[1].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[3].w = vec4(inversesqrt(Temp[0].w)).w;\n" +" Temp[1].z = Temp[1].z * Temp[3].w + -GlobalConstantBuffer_8;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[0].w * Temp[0].x + 1.000000;\n" +" Temp[0].w = clamp(Temp[0].w, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].z * Temp[0].w + Temp[1].w;\n" +" Temp[1].zw = vec4(Temp[2].wwww * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].w * Temp[1].z + Temp[0].w;\n" +" Temp[1].zw = vec4(Temp[0].zzzz * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[1].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[1].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[1].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[1].xyxx).xy;\n" +" Temp[1].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[0].z = vec4(dot((Temp[1].xyzx).xyz, (Temp[1].xyzx).xyz)).z;\n" +" Temp[1].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[1].xyzx).xyz)).x;\n" +" Temp[1].y = vec4(inversesqrt(Temp[0].z)).y;\n" +" Temp[1].x = Temp[1].x * Temp[1].y + -GlobalConstantBuffer_8;\n" +" Temp[1].x = clamp(Temp[1].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[0].z * Temp[0].x + 1.000000;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[1].x * Temp[0].x + Temp[0].w;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_10;\n" +" Temp[0].x = Temp[0].y * GlobalConstantBuffer_9 + Temp[0].x;\n" +" Temp[0].x = Temp[0].x * 0.031250;\n" +" Temp[0].y = Temp[2].z * GlobalConstantBuffer_22 + 1.000000;\n" +" Temp[0].y = Temp[0].y * GlobalConstantBuffer_23;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].x = vec4(dot((Temp[0].xxxx).xy, (Temp[0].yyyy).xy)).x;\n" +" Output0.x = -Temp[0].x + 1.000000;\n" +" Output0.x = clamp(Output0.x, 0.0, 1.0);\n" +" return;\n" +"}\n" +; +static const char* g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_0_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"struct PerPassConstantBuffer_0_Type {\n" +" vec4 f4Jitter;\n" +" vec2 f2Offset;\n" +" float fSliceIndex;\n" +" uint uSliceIndex;\n" +"};\n" +"uniform PerPassConstantBuffer {\n" +" PerPassConstantBuffer_0_Type PerPassConstantBuffer_0;\n" +"};\n" +"uniform sampler2DArray g_t0;\n" +"uniform sampler2D g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[8];\n" +"ivec4 Temp_int[8];\n" +"uvec4 Temp_uint[8];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(floor(Input0.xyxx)).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(4.000000, 4.000000, 0.000000, 0.000000) + PerPassConstantBuffer_0.f2Offset.xyxx.xyxx).xy;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_1.xyxx.xxxy).zw;\n" +" Temp[1].xy = vec4(Temp[0].zwzz * vec4(0.250000, 0.250000, 0.000000, 0.000000)).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[2].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[0].z = GlobalConstantBuffer_5 / Temp[2].z;\n" +" Temp[0].w = GlobalConstantBuffer_25 / Temp[0].z;\n" +" Temp[0].w = vec4(min(Temp[0].w, 1.000000)).w;\n" +" Temp[0].z = Temp[0].w * Temp[0].z;\n" +" Temp_uint[1].z = ((Temp[0].z)< (1.000000)) ? 0xFFFFFFFFu : 0u;\n" +" if((Temp_uint[1].z)!=0u){\n" +" Output0.x = vec4(1.000000).x;\n" +" return;\n" +" //ENDIF\n" +" }\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[1].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[2].xy = vec4(Temp[2].zzzz * Temp[1].zwzz).xy;\n" +" Temp_int[3].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[3].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[3].xyz = texelFetch(g_t1, ivec2((Temp_int[3]).xy), 0).xyz;\n" +" Temp[3].xyz = vec4(Temp[3].xyzx * vec4(2.000000, 2.000000, 2.000000, 0.000000) + vec4(-1.000000, -1.000000, -1.000000, 0.000000)).xyz;\n" +" Temp[0].x = Temp[0].w * Temp[0].w;\n" +" Temp[0].x = vec4(vec4(1.000000, 1.000000, 1.000000, 1.000000) / Temp[0].x).x;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_7;\n" +" Temp[0].y = Temp[0].z * 0.050000;\n" +" Temp[0].y = PerPassConstantBuffer_0.f4Jitter.z * Temp[0].y + 1.000000;\n" +" Temp[4].xyz = vec4(PerPassConstantBuffer_0.f4Jitter.xyyx * vec4(1.000000, -1.000000, -0.707107, 0.000000)).xyz;\n" +" Temp[1].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].w = Temp[0].z * 0.050000 + Temp[0].y;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[0].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[2].w = Temp[0].z * 0.050000 + Temp[0].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[2].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[0].z = Temp[0].z * 0.050000 + Temp[2].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[5].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[5].y = vec4(inversesqrt(Temp[5].w)).y;\n" +" Temp[5].x = Temp[5].x * Temp[5].y + -GlobalConstantBuffer_8;\n" +" Temp[5].x = clamp(Temp[5].x, 0.0, 1.0);\n" +" Temp[5].y = Temp[5].w * Temp[0].x + 1.000000;\n" +" Temp[5].y = clamp(Temp[5].y, 0.0, 1.0);\n" +" Temp[5].x = Temp[5].y * Temp[5].x;\n" +" Temp[3].w = Temp[4].w * Temp[3].w + Temp[5].x;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * Temp[0].zzzz).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[5].x = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[5].x)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[4].y = Temp[5].x * Temp[0].x + 1.000000;\n" +" Temp[4].y = clamp(Temp[4].y, 0.0, 1.0);\n" +" Temp[3].w = Temp[4].x * Temp[4].y + Temp[3].w;\n" +" Temp[4].xy = vec4(PerPassConstantBuffer_0.f4Jitter.xyxx * vec4(0.707107, 0.707107, 0.000000, 0.000000)).xy;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].y;\n" +" Temp[4].w = Temp[4].x + Temp[4].y;\n" +" Temp[5].y = vec4(-Temp[4].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[4].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).z;\n" +" Temp[5].w = vec4(inversesqrt(Temp[4].w)).w;\n" +" Temp[5].z = Temp[5].z * Temp[5].w + -GlobalConstantBuffer_8;\n" +" Temp[5].z = clamp(Temp[5].z, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[0].x + 1.000000;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[5].z;\n" +" Temp[1].z = Temp[1].w * Temp[1].z + Temp[4].w;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[1].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[1].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[1].w * Temp[0].x + 1.000000;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[1].w + Temp[3].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[4].y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107 + Temp[4].x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[4].xy = vec4(Temp[0].yyyy * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].x * Temp[3].w + Temp[1].z;\n" +" Temp[4].xy = vec4(Temp[0].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[2].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = -PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[3].w;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(-0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.000000 + PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * 0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].z;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[4].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].z = vec4(inversesqrt(Temp[0].y)).z;\n" +" Temp[3].w = Temp[3].w * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[0].y = Temp[0].y * Temp[0].x + 1.000000;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].y = Temp[3].w * Temp[0].y + Temp[1].z;\n" +" Temp[4].zw = vec4(Temp[0].wwww * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[1].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[3].w = vec4(inversesqrt(Temp[0].w)).w;\n" +" Temp[1].z = Temp[1].z * Temp[3].w + -GlobalConstantBuffer_8;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[0].w * Temp[0].x + 1.000000;\n" +" Temp[0].w = clamp(Temp[0].w, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].z * Temp[0].w + Temp[1].w;\n" +" Temp[1].zw = vec4(Temp[2].wwww * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].w * Temp[1].z + Temp[0].w;\n" +" Temp[1].zw = vec4(Temp[0].zzzz * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[1].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[1].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[1].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[1].xyxx).xy;\n" +" Temp[1].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[0].z = vec4(dot((Temp[1].xyzx).xyz, (Temp[1].xyzx).xyz)).z;\n" +" Temp[1].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[1].xyzx).xyz)).x;\n" +" Temp[1].y = vec4(inversesqrt(Temp[0].z)).y;\n" +" Temp[1].x = Temp[1].x * Temp[1].y + -GlobalConstantBuffer_8;\n" +" Temp[1].x = clamp(Temp[1].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[0].z * Temp[0].x + 1.000000;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[1].x * Temp[0].x + Temp[0].w;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_10;\n" +" Temp[0].x = Temp[0].y * GlobalConstantBuffer_9 + Temp[0].x;\n" +" Output0.x = -Temp[0].x * 0.062500 + 1.000000;\n" +" Output0.x = clamp(Output0.x, 0.0, 1.0);\n" +" return;\n" +"}\n" +; +static const char* g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_1_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"struct PerPassConstantBuffer_0_Type {\n" +" vec4 f4Jitter;\n" +" vec2 f2Offset;\n" +" float fSliceIndex;\n" +" uint uSliceIndex;\n" +"};\n" +"uniform PerPassConstantBuffer {\n" +" PerPassConstantBuffer_0_Type PerPassConstantBuffer_0;\n" +"};\n" +"uniform sampler2DArray g_t0;\n" +"uniform sampler2D g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[8];\n" +"ivec4 Temp_int[8];\n" +"uvec4 Temp_uint[8];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(floor(Input0.xyxx)).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(4.000000, 4.000000, 0.000000, 0.000000) + PerPassConstantBuffer_0.f2Offset.xyxx.xyxx).xy;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_1.xyxx.xxxy).zw;\n" +" Temp[1].xy = vec4(Temp[0].zwzz * vec4(0.250000, 0.250000, 0.000000, 0.000000)).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[2].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[0].z = GlobalConstantBuffer_5 / Temp[2].z;\n" +" Temp[0].w = GlobalConstantBuffer_25 / Temp[0].z;\n" +" Temp[0].w = vec4(min(Temp[0].w, 1.000000)).w;\n" +" Temp[0].z = Temp[0].w * Temp[0].z;\n" +" Temp_uint[1].z = ((Temp[0].z)< (1.000000)) ? 0xFFFFFFFFu : 0u;\n" +" if((Temp_uint[1].z)!=0u){\n" +" Output0.x = vec4(1.000000).x;\n" +" return;\n" +" //ENDIF\n" +" }\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[1].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[2].xy = vec4(Temp[2].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx + GlobalConstantBuffer_21.xyxx.xyxx).xy;\n" +" Temp_int[3].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[3].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[3].xyz = texelFetch(g_t1, ivec2((Temp_int[3]).xy), 0).xyz;\n" +" Temp[3].xyz = vec4(Temp[3].xyzx * GlobalConstantBuffer_28 + GlobalConstantBuffer_29).xyz;\n" +" Temp[4].xyz = vec4(Temp[3].yyyy * GlobalConstantBuffer_27[1].xyzx).xyz;\n" +" Temp[3].xyw = vec4(Temp[3].xxxx * GlobalConstantBuffer_27[0].xyxz + Temp[4].xyxz).xyw;\n" +" Temp[3].xyz = vec4(Temp[3].zzzz * GlobalConstantBuffer_27[2].xyzx + Temp[3].xywx).xyz;\n" +" Temp[0].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[3].xyzx).xyz)).x;\n" +" Temp[0].x = vec4(inversesqrt(Temp[0].x)).x;\n" +" Temp[3].xyz = vec4(Temp[0].xxxx * Temp[3].xyzx).xyz;\n" +" Temp[0].x = Temp[0].w * Temp[0].w;\n" +" Temp[0].x = vec4(vec4(1.000000, 1.000000, 1.000000, 1.000000) / Temp[0].x).x;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_7;\n" +" Temp[0].y = Temp[0].z * 0.050000;\n" +" Temp[0].y = PerPassConstantBuffer_0.f4Jitter.z * Temp[0].y + 1.000000;\n" +" Temp[4].xyz = vec4(PerPassConstantBuffer_0.f4Jitter.xyyx * vec4(1.000000, -1.000000, -0.707107, 0.000000)).xyz;\n" +" Temp[1].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].w = Temp[0].z * 0.050000 + Temp[0].y;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[0].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[2].w = Temp[0].z * 0.050000 + Temp[0].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[2].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[0].z = Temp[0].z * 0.050000 + Temp[2].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[5].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[5].y = vec4(inversesqrt(Temp[5].w)).y;\n" +" Temp[5].x = Temp[5].x * Temp[5].y + -GlobalConstantBuffer_8;\n" +" Temp[5].x = clamp(Temp[5].x, 0.0, 1.0);\n" +" Temp[5].y = Temp[5].w * Temp[0].x + 1.000000;\n" +" Temp[5].y = clamp(Temp[5].y, 0.0, 1.0);\n" +" Temp[5].x = Temp[5].y * Temp[5].x;\n" +" Temp[3].w = Temp[4].w * Temp[3].w + Temp[5].x;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * Temp[0].zzzz).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[5].x = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[5].x)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[4].y = Temp[5].x * Temp[0].x + 1.000000;\n" +" Temp[4].y = clamp(Temp[4].y, 0.0, 1.0);\n" +" Temp[3].w = Temp[4].x * Temp[4].y + Temp[3].w;\n" +" Temp[4].xy = vec4(PerPassConstantBuffer_0.f4Jitter.xyxx * vec4(0.707107, 0.707107, 0.000000, 0.000000)).xy;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].y;\n" +" Temp[4].w = Temp[4].x + Temp[4].y;\n" +" Temp[5].y = vec4(-Temp[4].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[4].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).z;\n" +" Temp[5].w = vec4(inversesqrt(Temp[4].w)).w;\n" +" Temp[5].z = Temp[5].z * Temp[5].w + -GlobalConstantBuffer_8;\n" +" Temp[5].z = clamp(Temp[5].z, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[0].x + 1.000000;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[5].z;\n" +" Temp[1].z = Temp[1].w * Temp[1].z + Temp[4].w;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[1].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[1].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[1].w * Temp[0].x + 1.000000;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[1].w + Temp[3].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[4].y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107 + Temp[4].x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[4].xy = vec4(Temp[0].yyyy * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].x * Temp[3].w + Temp[1].z;\n" +" Temp[4].xy = vec4(Temp[0].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[2].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = -PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[3].w;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(-0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.000000 + PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * 0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].z;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[4].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].z = vec4(inversesqrt(Temp[0].y)).z;\n" +" Temp[3].w = Temp[3].w * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[0].y = Temp[0].y * Temp[0].x + 1.000000;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].y = Temp[3].w * Temp[0].y + Temp[1].z;\n" +" Temp[4].zw = vec4(Temp[0].wwww * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[1].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[3].w = vec4(inversesqrt(Temp[0].w)).w;\n" +" Temp[1].z = Temp[1].z * Temp[3].w + -GlobalConstantBuffer_8;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[0].w * Temp[0].x + 1.000000;\n" +" Temp[0].w = clamp(Temp[0].w, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].z * Temp[0].w + Temp[1].w;\n" +" Temp[1].zw = vec4(Temp[2].wwww * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].w * Temp[1].z + Temp[0].w;\n" +" Temp[1].zw = vec4(Temp[0].zzzz * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[1].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[1].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[1].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[1].xyxx).xy;\n" +" Temp[1].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[0].z = vec4(dot((Temp[1].xyzx).xyz, (Temp[1].xyzx).xyz)).z;\n" +" Temp[1].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[1].xyzx).xyz)).x;\n" +" Temp[1].y = vec4(inversesqrt(Temp[0].z)).y;\n" +" Temp[1].x = Temp[1].x * Temp[1].y + -GlobalConstantBuffer_8;\n" +" Temp[1].x = clamp(Temp[1].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[0].z * Temp[0].x + 1.000000;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[1].x * Temp[0].x + Temp[0].w;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_10;\n" +" Temp[0].x = Temp[0].y * GlobalConstantBuffer_9 + Temp[0].x;\n" +" Output0.x = -Temp[0].x * 0.062500 + 1.000000;\n" +" Output0.x = clamp(Output0.x, 0.0, 1.0);\n" +" return;\n" +"}\n" +; +static const char* g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_2_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"struct PerPassConstantBuffer_0_Type {\n" +" vec4 f4Jitter;\n" +" vec2 f2Offset;\n" +" float fSliceIndex;\n" +" uint uSliceIndex;\n" +"};\n" +"uniform PerPassConstantBuffer {\n" +" PerPassConstantBuffer_0_Type PerPassConstantBuffer_0;\n" +"};\n" +"uniform sampler2DArray g_t0;\n" +"uniform sampler2DMS g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[8];\n" +"ivec4 Temp_int[8];\n" +"uvec4 Temp_uint[8];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(floor(Input0.xyxx)).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(4.000000, 4.000000, 0.000000, 0.000000) + PerPassConstantBuffer_0.f2Offset.xyxx.xyxx).xy;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_1.xyxx.xxxy).zw;\n" +" Temp[1].xy = vec4(Temp[0].zwzz * vec4(0.250000, 0.250000, 0.000000, 0.000000)).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[2].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[0].z = GlobalConstantBuffer_5 / Temp[2].z;\n" +" Temp[0].w = GlobalConstantBuffer_25 / Temp[0].z;\n" +" Temp[0].w = vec4(min(Temp[0].w, 1.000000)).w;\n" +" Temp[0].z = Temp[0].w * Temp[0].z;\n" +" Temp_uint[1].z = ((Temp[0].z)< (1.000000)) ? 0xFFFFFFFFu : 0u;\n" +" if((Temp_uint[1].z)!=0u){\n" +" Output0.x = vec4(1.000000).x;\n" +" return;\n" +" //ENDIF\n" +" }\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[1].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[2].xy = vec4(Temp[2].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx + GlobalConstantBuffer_21.xyxx.xyxx).xy;\n" +" Temp_int[3].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[3].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[3].xyz = texelFetch(g_t1, ivec2((Temp_int[3]).xy), 0).xyz;\n" +" Temp[3].xyz = vec4(Temp[3].xyzx * GlobalConstantBuffer_28 + GlobalConstantBuffer_29).xyz;\n" +" Temp[4].xyz = vec4(Temp[3].yyyy * GlobalConstantBuffer_27[1].xyzx).xyz;\n" +" Temp[3].xyw = vec4(Temp[3].xxxx * GlobalConstantBuffer_27[0].xyxz + Temp[4].xyxz).xyw;\n" +" Temp[3].xyz = vec4(Temp[3].zzzz * GlobalConstantBuffer_27[2].xyzx + Temp[3].xywx).xyz;\n" +" Temp[0].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[3].xyzx).xyz)).x;\n" +" Temp[0].x = vec4(inversesqrt(Temp[0].x)).x;\n" +" Temp[3].xyz = vec4(Temp[0].xxxx * Temp[3].xyzx).xyz;\n" +" Temp[0].x = Temp[0].w * Temp[0].w;\n" +" Temp[0].x = vec4(vec4(1.000000, 1.000000, 1.000000, 1.000000) / Temp[0].x).x;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_7;\n" +" Temp[0].y = Temp[0].z * 0.050000;\n" +" Temp[0].y = PerPassConstantBuffer_0.f4Jitter.z * Temp[0].y + 1.000000;\n" +" Temp[4].xyz = vec4(PerPassConstantBuffer_0.f4Jitter.xyyx * vec4(1.000000, -1.000000, -0.707107, 0.000000)).xyz;\n" +" Temp[1].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].w = Temp[0].z * 0.050000 + Temp[0].y;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[0].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[2].w = Temp[0].z * 0.050000 + Temp[0].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[2].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[0].z = Temp[0].z * 0.050000 + Temp[2].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[5].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[5].y = vec4(inversesqrt(Temp[5].w)).y;\n" +" Temp[5].x = Temp[5].x * Temp[5].y + -GlobalConstantBuffer_8;\n" +" Temp[5].x = clamp(Temp[5].x, 0.0, 1.0);\n" +" Temp[5].y = Temp[5].w * Temp[0].x + 1.000000;\n" +" Temp[5].y = clamp(Temp[5].y, 0.0, 1.0);\n" +" Temp[5].x = Temp[5].y * Temp[5].x;\n" +" Temp[3].w = Temp[4].w * Temp[3].w + Temp[5].x;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * Temp[0].zzzz).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[5].x = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[5].x)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[4].y = Temp[5].x * Temp[0].x + 1.000000;\n" +" Temp[4].y = clamp(Temp[4].y, 0.0, 1.0);\n" +" Temp[3].w = Temp[4].x * Temp[4].y + Temp[3].w;\n" +" Temp[4].xy = vec4(PerPassConstantBuffer_0.f4Jitter.xyxx * vec4(0.707107, 0.707107, 0.000000, 0.000000)).xy;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].y;\n" +" Temp[4].w = Temp[4].x + Temp[4].y;\n" +" Temp[5].y = vec4(-Temp[4].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[4].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).z;\n" +" Temp[5].w = vec4(inversesqrt(Temp[4].w)).w;\n" +" Temp[5].z = Temp[5].z * Temp[5].w + -GlobalConstantBuffer_8;\n" +" Temp[5].z = clamp(Temp[5].z, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[0].x + 1.000000;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[5].z;\n" +" Temp[1].z = Temp[1].w * Temp[1].z + Temp[4].w;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[1].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[1].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[1].w * Temp[0].x + 1.000000;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[1].w + Temp[3].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[4].y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107 + Temp[4].x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[4].xy = vec4(Temp[0].yyyy * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].x * Temp[3].w + Temp[1].z;\n" +" Temp[4].xy = vec4(Temp[0].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[2].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = -PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[3].w;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(-0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.000000 + PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * 0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].z;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[4].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].z = vec4(inversesqrt(Temp[0].y)).z;\n" +" Temp[3].w = Temp[3].w * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[0].y = Temp[0].y * Temp[0].x + 1.000000;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].y = Temp[3].w * Temp[0].y + Temp[1].z;\n" +" Temp[4].zw = vec4(Temp[0].wwww * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[1].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[3].w = vec4(inversesqrt(Temp[0].w)).w;\n" +" Temp[1].z = Temp[1].z * Temp[3].w + -GlobalConstantBuffer_8;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[0].w * Temp[0].x + 1.000000;\n" +" Temp[0].w = clamp(Temp[0].w, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].z * Temp[0].w + Temp[1].w;\n" +" Temp[1].zw = vec4(Temp[2].wwww * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].w * Temp[1].z + Temp[0].w;\n" +" Temp[1].zw = vec4(Temp[0].zzzz * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[1].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[1].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[1].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[1].xyxx).xy;\n" +" Temp[1].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[0].z = vec4(dot((Temp[1].xyzx).xyz, (Temp[1].xyzx).xyz)).z;\n" +" Temp[1].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[1].xyzx).xyz)).x;\n" +" Temp[1].y = vec4(inversesqrt(Temp[0].z)).y;\n" +" Temp[1].x = Temp[1].x * Temp[1].y + -GlobalConstantBuffer_8;\n" +" Temp[1].x = clamp(Temp[1].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[0].z * Temp[0].x + 1.000000;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[1].x * Temp[0].x + Temp[0].w;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_10;\n" +" Temp[0].x = Temp[0].y * GlobalConstantBuffer_9 + Temp[0].x;\n" +" Output0.x = -Temp[0].x * 0.062500 + 1.000000;\n" +" Output0.x = clamp(Output0.x, 0.0, 1.0);\n" +" return;\n" +"}\n" +; +static const char* g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_0_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"struct PerPassConstantBuffer_0_Type {\n" +" vec4 f4Jitter;\n" +" vec2 f2Offset;\n" +" float fSliceIndex;\n" +" uint uSliceIndex;\n" +"};\n" +"uniform PerPassConstantBuffer {\n" +" PerPassConstantBuffer_0_Type PerPassConstantBuffer_0;\n" +"};\n" +"uniform sampler2DArray g_t0;\n" +"uniform sampler2D g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[8];\n" +"ivec4 Temp_int[8];\n" +"uvec4 Temp_uint[8];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(floor(Input0.xyxx)).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(4.000000, 4.000000, 0.000000, 0.000000) + PerPassConstantBuffer_0.f2Offset.xyxx.xyxx).xy;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_1.xyxx.xxxy).zw;\n" +" Temp[1].xy = vec4(Temp[0].zwzz * vec4(0.250000, 0.250000, 0.000000, 0.000000)).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[2].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[0].z = GlobalConstantBuffer_5 / Temp[2].z;\n" +" Temp[0].w = GlobalConstantBuffer_25 / Temp[0].z;\n" +" Temp[0].w = vec4(min(Temp[0].w, 1.000000)).w;\n" +" Temp[0].z = Temp[0].w * Temp[0].z;\n" +" Temp_uint[1].z = ((Temp[0].z)< (1.000000)) ? 0xFFFFFFFFu : 0u;\n" +" if((Temp_uint[1].z)!=0u){\n" +" Output0.x = vec4(1.000000).x;\n" +" return;\n" +" //ENDIF\n" +" }\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[1].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[2].xy = vec4(Temp[2].zzzz * Temp[1].zwzz).xy;\n" +" Temp_int[3].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[3].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[3].xyz = texelFetch(g_t1, ivec2((Temp_int[3]).xy), 0).xyz;\n" +" Temp[3].xyz = vec4(Temp[3].xyzx * vec4(2.000000, 2.000000, 2.000000, 0.000000) + vec4(-1.000000, -1.000000, -1.000000, 0.000000)).xyz;\n" +" Temp[0].x = Temp[0].w * Temp[0].w;\n" +" Temp[0].x = vec4(vec4(1.000000, 1.000000, 1.000000, 1.000000) / Temp[0].x).x;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_7;\n" +" Temp[0].y = Temp[0].z * 0.050000;\n" +" Temp[0].y = PerPassConstantBuffer_0.f4Jitter.z * Temp[0].y + 1.000000;\n" +" Temp[4].xyz = vec4(PerPassConstantBuffer_0.f4Jitter.xyyx * vec4(1.000000, -1.000000, -0.707107, 0.000000)).xyz;\n" +" Temp[1].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].w = Temp[0].z * 0.050000 + Temp[0].y;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[0].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[2].w = Temp[0].z * 0.050000 + Temp[0].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[2].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[0].z = Temp[0].z * 0.050000 + Temp[2].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[5].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[5].y = vec4(inversesqrt(Temp[5].w)).y;\n" +" Temp[5].x = Temp[5].x * Temp[5].y + -GlobalConstantBuffer_8;\n" +" Temp[5].x = clamp(Temp[5].x, 0.0, 1.0);\n" +" Temp[5].y = Temp[5].w * Temp[0].x + 1.000000;\n" +" Temp[5].y = clamp(Temp[5].y, 0.0, 1.0);\n" +" Temp[5].x = Temp[5].y * Temp[5].x;\n" +" Temp[3].w = Temp[4].w * Temp[3].w + Temp[5].x;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * Temp[0].zzzz).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[5].x = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[5].x)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[4].y = Temp[5].x * Temp[0].x + 1.000000;\n" +" Temp[4].y = clamp(Temp[4].y, 0.0, 1.0);\n" +" Temp[3].w = Temp[4].x * Temp[4].y + Temp[3].w;\n" +" Temp[4].xy = vec4(PerPassConstantBuffer_0.f4Jitter.xyxx * vec4(0.707107, 0.707107, 0.000000, 0.000000)).xy;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].y;\n" +" Temp[4].w = Temp[4].x + Temp[4].y;\n" +" Temp[5].y = vec4(-Temp[4].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[4].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).z;\n" +" Temp[5].w = vec4(inversesqrt(Temp[4].w)).w;\n" +" Temp[5].z = Temp[5].z * Temp[5].w + -GlobalConstantBuffer_8;\n" +" Temp[5].z = clamp(Temp[5].z, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[0].x + 1.000000;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[5].z;\n" +" Temp[1].z = Temp[1].w * Temp[1].z + Temp[4].w;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[1].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[1].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[1].w * Temp[0].x + 1.000000;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[1].w + Temp[3].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[4].y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107 + Temp[4].x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[4].xy = vec4(Temp[0].yyyy * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].x * Temp[3].w + Temp[1].z;\n" +" Temp[4].xy = vec4(Temp[0].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[2].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = -PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[3].w;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(-0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.000000 + PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * 0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].z;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[4].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].z = vec4(inversesqrt(Temp[0].y)).z;\n" +" Temp[3].w = Temp[3].w * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[0].y = Temp[0].y * Temp[0].x + 1.000000;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].y = Temp[3].w * Temp[0].y + Temp[1].z;\n" +" Temp[4].zw = vec4(Temp[0].wwww * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[1].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[3].w = vec4(inversesqrt(Temp[0].w)).w;\n" +" Temp[1].z = Temp[1].z * Temp[3].w + -GlobalConstantBuffer_8;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[0].w * Temp[0].x + 1.000000;\n" +" Temp[0].w = clamp(Temp[0].w, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].z * Temp[0].w + Temp[1].w;\n" +" Temp[1].zw = vec4(Temp[2].wwww * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].w * Temp[1].z + Temp[0].w;\n" +" Temp[1].zw = vec4(Temp[0].zzzz * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[1].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[1].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[1].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[1].xyxx).xy;\n" +" Temp[1].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[0].z = vec4(dot((Temp[1].xyzx).xyz, (Temp[1].xyzx).xyz)).z;\n" +" Temp[1].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[1].xyzx).xyz)).x;\n" +" Temp[1].y = vec4(inversesqrt(Temp[0].z)).y;\n" +" Temp[1].x = Temp[1].x * Temp[1].y + -GlobalConstantBuffer_8;\n" +" Temp[1].x = clamp(Temp[1].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[0].z * Temp[0].x + 1.000000;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[1].x * Temp[0].x + Temp[0].w;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_10;\n" +" Temp[0].x = Temp[0].y * GlobalConstantBuffer_9 + Temp[0].x;\n" +" Temp[0].x = Temp[0].x * 0.031250;\n" +" Temp[0].y = Temp[2].z * GlobalConstantBuffer_22 + 1.000000;\n" +" Temp[0].y = Temp[0].y * GlobalConstantBuffer_23;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].x = vec4(dot((Temp[0].xxxx).xy, (Temp[0].yyyy).xy)).x;\n" +" Output0.x = -Temp[0].x + 1.000000;\n" +" Output0.x = clamp(Output0.x, 0.0, 1.0);\n" +" return;\n" +"}\n" +; +static const char* g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_1_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"struct PerPassConstantBuffer_0_Type {\n" +" vec4 f4Jitter;\n" +" vec2 f2Offset;\n" +" float fSliceIndex;\n" +" uint uSliceIndex;\n" +"};\n" +"uniform PerPassConstantBuffer {\n" +" PerPassConstantBuffer_0_Type PerPassConstantBuffer_0;\n" +"};\n" +"uniform sampler2DArray g_t0;\n" +"uniform sampler2D g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[8];\n" +"ivec4 Temp_int[8];\n" +"uvec4 Temp_uint[8];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(floor(Input0.xyxx)).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(4.000000, 4.000000, 0.000000, 0.000000) + PerPassConstantBuffer_0.f2Offset.xyxx.xyxx).xy;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_1.xyxx.xxxy).zw;\n" +" Temp[1].xy = vec4(Temp[0].zwzz * vec4(0.250000, 0.250000, 0.000000, 0.000000)).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[2].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[0].z = GlobalConstantBuffer_5 / Temp[2].z;\n" +" Temp[0].w = GlobalConstantBuffer_25 / Temp[0].z;\n" +" Temp[0].w = vec4(min(Temp[0].w, 1.000000)).w;\n" +" Temp[0].z = Temp[0].w * Temp[0].z;\n" +" Temp_uint[1].z = ((Temp[0].z)< (1.000000)) ? 0xFFFFFFFFu : 0u;\n" +" if((Temp_uint[1].z)!=0u){\n" +" Output0.x = vec4(1.000000).x;\n" +" return;\n" +" //ENDIF\n" +" }\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[1].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[2].xy = vec4(Temp[2].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx + GlobalConstantBuffer_21.xyxx.xyxx).xy;\n" +" Temp_int[3].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[3].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[3].xyz = texelFetch(g_t1, ivec2((Temp_int[3]).xy), 0).xyz;\n" +" Temp[3].xyz = vec4(Temp[3].xyzx * GlobalConstantBuffer_28 + GlobalConstantBuffer_29).xyz;\n" +" Temp[4].xyz = vec4(Temp[3].yyyy * GlobalConstantBuffer_27[1].xyzx).xyz;\n" +" Temp[3].xyw = vec4(Temp[3].xxxx * GlobalConstantBuffer_27[0].xyxz + Temp[4].xyxz).xyw;\n" +" Temp[3].xyz = vec4(Temp[3].zzzz * GlobalConstantBuffer_27[2].xyzx + Temp[3].xywx).xyz;\n" +" Temp[0].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[3].xyzx).xyz)).x;\n" +" Temp[0].x = vec4(inversesqrt(Temp[0].x)).x;\n" +" Temp[3].xyz = vec4(Temp[0].xxxx * Temp[3].xyzx).xyz;\n" +" Temp[0].x = Temp[0].w * Temp[0].w;\n" +" Temp[0].x = vec4(vec4(1.000000, 1.000000, 1.000000, 1.000000) / Temp[0].x).x;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_7;\n" +" Temp[0].y = Temp[0].z * 0.050000;\n" +" Temp[0].y = PerPassConstantBuffer_0.f4Jitter.z * Temp[0].y + 1.000000;\n" +" Temp[4].xyz = vec4(PerPassConstantBuffer_0.f4Jitter.xyyx * vec4(1.000000, -1.000000, -0.707107, 0.000000)).xyz;\n" +" Temp[1].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].w = Temp[0].z * 0.050000 + Temp[0].y;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[0].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[2].w = Temp[0].z * 0.050000 + Temp[0].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[2].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[0].z = Temp[0].z * 0.050000 + Temp[2].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[5].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[5].y = vec4(inversesqrt(Temp[5].w)).y;\n" +" Temp[5].x = Temp[5].x * Temp[5].y + -GlobalConstantBuffer_8;\n" +" Temp[5].x = clamp(Temp[5].x, 0.0, 1.0);\n" +" Temp[5].y = Temp[5].w * Temp[0].x + 1.000000;\n" +" Temp[5].y = clamp(Temp[5].y, 0.0, 1.0);\n" +" Temp[5].x = Temp[5].y * Temp[5].x;\n" +" Temp[3].w = Temp[4].w * Temp[3].w + Temp[5].x;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * Temp[0].zzzz).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[5].x = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[5].x)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[4].y = Temp[5].x * Temp[0].x + 1.000000;\n" +" Temp[4].y = clamp(Temp[4].y, 0.0, 1.0);\n" +" Temp[3].w = Temp[4].x * Temp[4].y + Temp[3].w;\n" +" Temp[4].xy = vec4(PerPassConstantBuffer_0.f4Jitter.xyxx * vec4(0.707107, 0.707107, 0.000000, 0.000000)).xy;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].y;\n" +" Temp[4].w = Temp[4].x + Temp[4].y;\n" +" Temp[5].y = vec4(-Temp[4].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[4].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).z;\n" +" Temp[5].w = vec4(inversesqrt(Temp[4].w)).w;\n" +" Temp[5].z = Temp[5].z * Temp[5].w + -GlobalConstantBuffer_8;\n" +" Temp[5].z = clamp(Temp[5].z, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[0].x + 1.000000;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[5].z;\n" +" Temp[1].z = Temp[1].w * Temp[1].z + Temp[4].w;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[1].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[1].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[1].w * Temp[0].x + 1.000000;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[1].w + Temp[3].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[4].y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107 + Temp[4].x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[4].xy = vec4(Temp[0].yyyy * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].x * Temp[3].w + Temp[1].z;\n" +" Temp[4].xy = vec4(Temp[0].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[2].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = -PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[3].w;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(-0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.000000 + PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * 0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].z;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[4].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].z = vec4(inversesqrt(Temp[0].y)).z;\n" +" Temp[3].w = Temp[3].w * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[0].y = Temp[0].y * Temp[0].x + 1.000000;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].y = Temp[3].w * Temp[0].y + Temp[1].z;\n" +" Temp[4].zw = vec4(Temp[0].wwww * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[1].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[3].w = vec4(inversesqrt(Temp[0].w)).w;\n" +" Temp[1].z = Temp[1].z * Temp[3].w + -GlobalConstantBuffer_8;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[0].w * Temp[0].x + 1.000000;\n" +" Temp[0].w = clamp(Temp[0].w, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].z * Temp[0].w + Temp[1].w;\n" +" Temp[1].zw = vec4(Temp[2].wwww * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].w * Temp[1].z + Temp[0].w;\n" +" Temp[1].zw = vec4(Temp[0].zzzz * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[1].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[1].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[1].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[1].xyxx).xy;\n" +" Temp[1].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[0].z = vec4(dot((Temp[1].xyzx).xyz, (Temp[1].xyzx).xyz)).z;\n" +" Temp[1].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[1].xyzx).xyz)).x;\n" +" Temp[1].y = vec4(inversesqrt(Temp[0].z)).y;\n" +" Temp[1].x = Temp[1].x * Temp[1].y + -GlobalConstantBuffer_8;\n" +" Temp[1].x = clamp(Temp[1].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[0].z * Temp[0].x + 1.000000;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[1].x * Temp[0].x + Temp[0].w;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_10;\n" +" Temp[0].x = Temp[0].y * GlobalConstantBuffer_9 + Temp[0].x;\n" +" Temp[0].x = Temp[0].x * 0.031250;\n" +" Temp[0].y = Temp[2].z * GlobalConstantBuffer_22 + 1.000000;\n" +" Temp[0].y = Temp[0].y * GlobalConstantBuffer_23;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].x = vec4(dot((Temp[0].xxxx).xy, (Temp[0].yyyy).xy)).x;\n" +" Output0.x = -Temp[0].x + 1.000000;\n" +" Output0.x = clamp(Output0.x, 0.0, 1.0);\n" +" return;\n" +"}\n" +; +static const char* g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_2_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"struct PerPassConstantBuffer_0_Type {\n" +" vec4 f4Jitter;\n" +" vec2 f2Offset;\n" +" float fSliceIndex;\n" +" uint uSliceIndex;\n" +"};\n" +"uniform PerPassConstantBuffer {\n" +" PerPassConstantBuffer_0_Type PerPassConstantBuffer_0;\n" +"};\n" +"uniform sampler2DArray g_t0;\n" +"uniform sampler2DMS g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[8];\n" +"ivec4 Temp_int[8];\n" +"uvec4 Temp_uint[8];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(floor(Input0.xyxx)).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(4.000000, 4.000000, 0.000000, 0.000000) + PerPassConstantBuffer_0.f2Offset.xyxx.xyxx).xy;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_1.xyxx.xxxy).zw;\n" +" Temp[1].xy = vec4(Temp[0].zwzz * vec4(0.250000, 0.250000, 0.000000, 0.000000)).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[2].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[0].z = GlobalConstantBuffer_5 / Temp[2].z;\n" +" Temp[0].w = GlobalConstantBuffer_25 / Temp[0].z;\n" +" Temp[0].w = vec4(min(Temp[0].w, 1.000000)).w;\n" +" Temp[0].z = Temp[0].w * Temp[0].z;\n" +" Temp_uint[1].z = ((Temp[0].z)< (1.000000)) ? 0xFFFFFFFFu : 0u;\n" +" if((Temp_uint[1].z)!=0u){\n" +" Output0.x = vec4(1.000000).x;\n" +" return;\n" +" //ENDIF\n" +" }\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[1].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[2].xy = vec4(Temp[2].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx + GlobalConstantBuffer_21.xyxx.xyxx).xy;\n" +" Temp_int[3].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[3].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[3].xyz = texelFetch(g_t1, ivec2((Temp_int[3]).xy), 0).xyz;\n" +" Temp[3].xyz = vec4(Temp[3].xyzx * GlobalConstantBuffer_28 + GlobalConstantBuffer_29).xyz;\n" +" Temp[4].xyz = vec4(Temp[3].yyyy * GlobalConstantBuffer_27[1].xyzx).xyz;\n" +" Temp[3].xyw = vec4(Temp[3].xxxx * GlobalConstantBuffer_27[0].xyxz + Temp[4].xyxz).xyw;\n" +" Temp[3].xyz = vec4(Temp[3].zzzz * GlobalConstantBuffer_27[2].xyzx + Temp[3].xywx).xyz;\n" +" Temp[0].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[3].xyzx).xyz)).x;\n" +" Temp[0].x = vec4(inversesqrt(Temp[0].x)).x;\n" +" Temp[3].xyz = vec4(Temp[0].xxxx * Temp[3].xyzx).xyz;\n" +" Temp[0].x = Temp[0].w * Temp[0].w;\n" +" Temp[0].x = vec4(vec4(1.000000, 1.000000, 1.000000, 1.000000) / Temp[0].x).x;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_7;\n" +" Temp[0].y = Temp[0].z * 0.050000;\n" +" Temp[0].y = PerPassConstantBuffer_0.f4Jitter.z * Temp[0].y + 1.000000;\n" +" Temp[4].xyz = vec4(PerPassConstantBuffer_0.f4Jitter.xyyx * vec4(1.000000, -1.000000, -0.707107, 0.000000)).xyz;\n" +" Temp[1].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].w = Temp[0].z * 0.050000 + Temp[0].y;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[0].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[2].w = Temp[0].z * 0.050000 + Temp[0].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[2].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[0].z = Temp[0].z * 0.050000 + Temp[2].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[5].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[5].y = vec4(inversesqrt(Temp[5].w)).y;\n" +" Temp[5].x = Temp[5].x * Temp[5].y + -GlobalConstantBuffer_8;\n" +" Temp[5].x = clamp(Temp[5].x, 0.0, 1.0);\n" +" Temp[5].y = Temp[5].w * Temp[0].x + 1.000000;\n" +" Temp[5].y = clamp(Temp[5].y, 0.0, 1.0);\n" +" Temp[5].x = Temp[5].y * Temp[5].x;\n" +" Temp[3].w = Temp[4].w * Temp[3].w + Temp[5].x;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * Temp[0].zzzz).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[5].x = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[5].x)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[4].y = Temp[5].x * Temp[0].x + 1.000000;\n" +" Temp[4].y = clamp(Temp[4].y, 0.0, 1.0);\n" +" Temp[3].w = Temp[4].x * Temp[4].y + Temp[3].w;\n" +" Temp[4].xy = vec4(PerPassConstantBuffer_0.f4Jitter.xyxx * vec4(0.707107, 0.707107, 0.000000, 0.000000)).xy;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].y;\n" +" Temp[4].w = Temp[4].x + Temp[4].y;\n" +" Temp[5].y = vec4(-Temp[4].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[4].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).z;\n" +" Temp[5].w = vec4(inversesqrt(Temp[4].w)).w;\n" +" Temp[5].z = Temp[5].z * Temp[5].w + -GlobalConstantBuffer_8;\n" +" Temp[5].z = clamp(Temp[5].z, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[0].x + 1.000000;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[5].z;\n" +" Temp[1].z = Temp[1].w * Temp[1].z + Temp[4].w;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[1].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[1].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[1].w * Temp[0].x + 1.000000;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[1].w + Temp[3].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[4].y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107 + Temp[4].x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[4].xy = vec4(Temp[0].yyyy * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].x * Temp[3].w + Temp[1].z;\n" +" Temp[4].xy = vec4(Temp[0].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[2].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = -PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[3].w;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(-0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.000000 + PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * 0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].z;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[4].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].z = vec4(inversesqrt(Temp[0].y)).z;\n" +" Temp[3].w = Temp[3].w * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[0].y = Temp[0].y * Temp[0].x + 1.000000;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].y = Temp[3].w * Temp[0].y + Temp[1].z;\n" +" Temp[4].zw = vec4(Temp[0].wwww * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[1].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[3].w = vec4(inversesqrt(Temp[0].w)).w;\n" +" Temp[1].z = Temp[1].z * Temp[3].w + -GlobalConstantBuffer_8;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[0].w * Temp[0].x + 1.000000;\n" +" Temp[0].w = clamp(Temp[0].w, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].z * Temp[0].w + Temp[1].w;\n" +" Temp[1].zw = vec4(Temp[2].wwww * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].w * Temp[1].z + Temp[0].w;\n" +" Temp[1].zw = vec4(Temp[0].zzzz * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[1].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[1].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[1].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[1].xyxx).xy;\n" +" Temp[1].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[0].z = vec4(dot((Temp[1].xyzx).xyz, (Temp[1].xyzx).xyz)).z;\n" +" Temp[1].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[1].xyzx).xyz)).x;\n" +" Temp[1].y = vec4(inversesqrt(Temp[0].z)).y;\n" +" Temp[1].x = Temp[1].x * Temp[1].y + -GlobalConstantBuffer_8;\n" +" Temp[1].x = clamp(Temp[1].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[0].z * Temp[0].x + 1.000000;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[1].x * Temp[0].x + Temp[0].w;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_10;\n" +" Temp[0].x = Temp[0].y * GlobalConstantBuffer_9 + Temp[0].x;\n" +" Temp[0].x = Temp[0].x * 0.031250;\n" +" Temp[0].y = Temp[2].z * GlobalConstantBuffer_22 + 1.000000;\n" +" Temp[0].y = Temp[0].y * GlobalConstantBuffer_23;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].x = vec4(dot((Temp[0].xxxx).xy, (Temp[0].yyyy).xy)).x;\n" +" Output0.x = -Temp[0].x + 1.000000;\n" +" Output0.x = clamp(Output0.x, 0.0, 1.0);\n" +" return;\n" +"}\n" +; +static const char* g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_0_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"struct PerPassConstantBuffer_0_Type {\n" +" vec4 f4Jitter;\n" +" vec2 f2Offset;\n" +" float fSliceIndex;\n" +" uint uSliceIndex;\n" +"};\n" +"uniform PerPassConstantBuffer {\n" +" PerPassConstantBuffer_0_Type PerPassConstantBuffer_0;\n" +"};\n" +"uniform sampler2DArray g_t0;\n" +"uniform sampler2D g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[8];\n" +"ivec4 Temp_int[8];\n" +"uvec4 Temp_uint[8];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(floor(Input0.xyxx)).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(4.000000, 4.000000, 0.000000, 0.000000) + PerPassConstantBuffer_0.f2Offset.xyxx.xyxx).xy;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_1.xyxx.xxxy).zw;\n" +" Temp[1].xy = vec4(Temp[0].zwzz * vec4(0.250000, 0.250000, 0.000000, 0.000000)).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[2].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[0].z = GlobalConstantBuffer_5 / Temp[2].z;\n" +" Temp[0].w = GlobalConstantBuffer_24 / Temp[0].z;\n" +" Temp[0].w = vec4(max(Temp[0].w, 1.000000)).w;\n" +" Temp[0].z = Temp[0].w * Temp[0].z;\n" +" Temp[1].z = GlobalConstantBuffer_25 / Temp[0].z;\n" +" Temp[1].z = vec4(min(Temp[1].z, 1.000000)).z;\n" +" Temp[0].z = Temp[0].z * Temp[1].z;\n" +" Temp_uint[1].w = ((Temp[0].z)< (1.000000)) ? 0xFFFFFFFFu : 0u;\n" +" if((Temp_uint[1].w)!=0u){\n" +" Output0.x = vec4(1.000000).x;\n" +" return;\n" +" //ENDIF\n" +" }\n" +" Temp[3].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[1].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[2].xy = vec4(Temp[2].zzzz * Temp[3].xyxx).xy;\n" +" Temp_int[3].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[3].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[3].xyz = texelFetch(g_t1, ivec2((Temp_int[3]).xy), 0).xyz;\n" +" Temp[3].xyz = vec4(Temp[3].xyzx * vec4(2.000000, 2.000000, 2.000000, 0.000000) + vec4(-1.000000, -1.000000, -1.000000, 0.000000)).xyz;\n" +" Temp[0].x = Temp[0].w * Temp[0].w;\n" +" Temp[0].x = vec4(vec4(1.000000, 1.000000, 1.000000, 1.000000) / Temp[0].x).x;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_7;\n" +" Temp[0].y = Temp[1].z * Temp[1].z;\n" +" Temp[0].y = vec4(vec4(1.000000, 1.000000, 1.000000, 1.000000) / Temp[0].y).y;\n" +" Temp[0].x = Temp[0].y * Temp[0].x;\n" +" Temp[0].y = Temp[0].z * 0.050000;\n" +" Temp[0].y = PerPassConstantBuffer_0.f4Jitter.z * Temp[0].y + 1.000000;\n" +" Temp[4].xyz = vec4(PerPassConstantBuffer_0.f4Jitter.xyyx * vec4(1.000000, -1.000000, -0.707107, 0.000000)).xyz;\n" +" Temp[1].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].w = Temp[0].z * 0.050000 + Temp[0].y;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[0].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[2].w = Temp[0].z * 0.050000 + Temp[0].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[2].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[0].z = Temp[0].z * 0.050000 + Temp[2].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[5].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[5].y = vec4(inversesqrt(Temp[5].w)).y;\n" +" Temp[5].x = Temp[5].x * Temp[5].y + -GlobalConstantBuffer_8;\n" +" Temp[5].x = clamp(Temp[5].x, 0.0, 1.0);\n" +" Temp[5].y = Temp[5].w * Temp[0].x + 1.000000;\n" +" Temp[5].y = clamp(Temp[5].y, 0.0, 1.0);\n" +" Temp[5].x = Temp[5].y * Temp[5].x;\n" +" Temp[3].w = Temp[4].w * Temp[3].w + Temp[5].x;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * Temp[0].zzzz).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[5].x = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[5].x)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[4].y = Temp[5].x * Temp[0].x + 1.000000;\n" +" Temp[4].y = clamp(Temp[4].y, 0.0, 1.0);\n" +" Temp[3].w = Temp[4].x * Temp[4].y + Temp[3].w;\n" +" Temp[4].xy = vec4(PerPassConstantBuffer_0.f4Jitter.xyxx * vec4(0.707107, 0.707107, 0.000000, 0.000000)).xy;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].y;\n" +" Temp[4].w = Temp[4].x + Temp[4].y;\n" +" Temp[5].y = vec4(-Temp[4].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[4].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).z;\n" +" Temp[5].w = vec4(inversesqrt(Temp[4].w)).w;\n" +" Temp[5].z = Temp[5].z * Temp[5].w + -GlobalConstantBuffer_8;\n" +" Temp[5].z = clamp(Temp[5].z, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[0].x + 1.000000;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[5].z;\n" +" Temp[1].z = Temp[1].w * Temp[1].z + Temp[4].w;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[1].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[1].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[1].w * Temp[0].x + 1.000000;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[1].w + Temp[3].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[4].y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107 + Temp[4].x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[4].xy = vec4(Temp[0].yyyy * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].x * Temp[3].w + Temp[1].z;\n" +" Temp[4].xy = vec4(Temp[0].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[2].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = -PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[3].w;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(-0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.000000 + PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * 0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].z;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[4].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].z = vec4(inversesqrt(Temp[0].y)).z;\n" +" Temp[3].w = Temp[3].w * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[0].y = Temp[0].y * Temp[0].x + 1.000000;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].y = Temp[3].w * Temp[0].y + Temp[1].z;\n" +" Temp[4].zw = vec4(Temp[0].wwww * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[1].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[3].w = vec4(inversesqrt(Temp[0].w)).w;\n" +" Temp[1].z = Temp[1].z * Temp[3].w + -GlobalConstantBuffer_8;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[0].w * Temp[0].x + 1.000000;\n" +" Temp[0].w = clamp(Temp[0].w, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].z * Temp[0].w + Temp[1].w;\n" +" Temp[1].zw = vec4(Temp[2].wwww * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].w * Temp[1].z + Temp[0].w;\n" +" Temp[1].zw = vec4(Temp[0].zzzz * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[1].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[1].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[1].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[1].xyxx).xy;\n" +" Temp[1].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[0].z = vec4(dot((Temp[1].xyzx).xyz, (Temp[1].xyzx).xyz)).z;\n" +" Temp[1].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[1].xyzx).xyz)).x;\n" +" Temp[1].y = vec4(inversesqrt(Temp[0].z)).y;\n" +" Temp[1].x = Temp[1].x * Temp[1].y + -GlobalConstantBuffer_8;\n" +" Temp[1].x = clamp(Temp[1].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[0].z * Temp[0].x + 1.000000;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[1].x * Temp[0].x + Temp[0].w;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_10;\n" +" Temp[0].x = Temp[0].y * GlobalConstantBuffer_9 + Temp[0].x;\n" +" Output0.x = -Temp[0].x * 0.062500 + 1.000000;\n" +" Output0.x = clamp(Output0.x, 0.0, 1.0);\n" +" return;\n" +"}\n" +; +static const char* g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_1_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"struct PerPassConstantBuffer_0_Type {\n" +" vec4 f4Jitter;\n" +" vec2 f2Offset;\n" +" float fSliceIndex;\n" +" uint uSliceIndex;\n" +"};\n" +"uniform PerPassConstantBuffer {\n" +" PerPassConstantBuffer_0_Type PerPassConstantBuffer_0;\n" +"};\n" +"uniform sampler2DArray g_t0;\n" +"uniform sampler2D g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[8];\n" +"ivec4 Temp_int[8];\n" +"uvec4 Temp_uint[8];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(floor(Input0.xyxx)).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(4.000000, 4.000000, 0.000000, 0.000000) + PerPassConstantBuffer_0.f2Offset.xyxx.xyxx).xy;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_1.xyxx.xxxy).zw;\n" +" Temp[1].xy = vec4(Temp[0].zwzz * vec4(0.250000, 0.250000, 0.000000, 0.000000)).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[2].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[0].z = GlobalConstantBuffer_5 / Temp[2].z;\n" +" Temp[0].w = GlobalConstantBuffer_24 / Temp[0].z;\n" +" Temp[0].w = vec4(max(Temp[0].w, 1.000000)).w;\n" +" Temp[0].z = Temp[0].w * Temp[0].z;\n" +" Temp[1].z = GlobalConstantBuffer_25 / Temp[0].z;\n" +" Temp[1].z = vec4(min(Temp[1].z, 1.000000)).z;\n" +" Temp[0].z = Temp[0].z * Temp[1].z;\n" +" Temp_uint[1].w = ((Temp[0].z)< (1.000000)) ? 0xFFFFFFFFu : 0u;\n" +" if((Temp_uint[1].w)!=0u){\n" +" Output0.x = vec4(1.000000).x;\n" +" return;\n" +" //ENDIF\n" +" }\n" +" Temp[3].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[1].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[2].xy = vec4(Temp[2].zzzz * Temp[3].xyxx).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx + GlobalConstantBuffer_21.xyxx.xyxx).xy;\n" +" Temp_int[3].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[3].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[3].xyz = texelFetch(g_t1, ivec2((Temp_int[3]).xy), 0).xyz;\n" +" Temp[3].xyz = vec4(Temp[3].xyzx * GlobalConstantBuffer_28 + GlobalConstantBuffer_29).xyz;\n" +" Temp[4].xyz = vec4(Temp[3].yyyy * GlobalConstantBuffer_27[1].xyzx).xyz;\n" +" Temp[3].xyw = vec4(Temp[3].xxxx * GlobalConstantBuffer_27[0].xyxz + Temp[4].xyxz).xyw;\n" +" Temp[3].xyz = vec4(Temp[3].zzzz * GlobalConstantBuffer_27[2].xyzx + Temp[3].xywx).xyz;\n" +" Temp[0].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[3].xyzx).xyz)).x;\n" +" Temp[0].x = vec4(inversesqrt(Temp[0].x)).x;\n" +" Temp[3].xyz = vec4(Temp[0].xxxx * Temp[3].xyzx).xyz;\n" +" Temp[0].x = Temp[0].w * Temp[0].w;\n" +" Temp[0].x = vec4(vec4(1.000000, 1.000000, 1.000000, 1.000000) / Temp[0].x).x;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_7;\n" +" Temp[0].y = Temp[1].z * Temp[1].z;\n" +" Temp[0].y = vec4(vec4(1.000000, 1.000000, 1.000000, 1.000000) / Temp[0].y).y;\n" +" Temp[0].x = Temp[0].y * Temp[0].x;\n" +" Temp[0].y = Temp[0].z * 0.050000;\n" +" Temp[0].y = PerPassConstantBuffer_0.f4Jitter.z * Temp[0].y + 1.000000;\n" +" Temp[4].xyz = vec4(PerPassConstantBuffer_0.f4Jitter.xyyx * vec4(1.000000, -1.000000, -0.707107, 0.000000)).xyz;\n" +" Temp[1].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].w = Temp[0].z * 0.050000 + Temp[0].y;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[0].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[2].w = Temp[0].z * 0.050000 + Temp[0].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[2].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[0].z = Temp[0].z * 0.050000 + Temp[2].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[5].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[5].y = vec4(inversesqrt(Temp[5].w)).y;\n" +" Temp[5].x = Temp[5].x * Temp[5].y + -GlobalConstantBuffer_8;\n" +" Temp[5].x = clamp(Temp[5].x, 0.0, 1.0);\n" +" Temp[5].y = Temp[5].w * Temp[0].x + 1.000000;\n" +" Temp[5].y = clamp(Temp[5].y, 0.0, 1.0);\n" +" Temp[5].x = Temp[5].y * Temp[5].x;\n" +" Temp[3].w = Temp[4].w * Temp[3].w + Temp[5].x;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * Temp[0].zzzz).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[5].x = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[5].x)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[4].y = Temp[5].x * Temp[0].x + 1.000000;\n" +" Temp[4].y = clamp(Temp[4].y, 0.0, 1.0);\n" +" Temp[3].w = Temp[4].x * Temp[4].y + Temp[3].w;\n" +" Temp[4].xy = vec4(PerPassConstantBuffer_0.f4Jitter.xyxx * vec4(0.707107, 0.707107, 0.000000, 0.000000)).xy;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].y;\n" +" Temp[4].w = Temp[4].x + Temp[4].y;\n" +" Temp[5].y = vec4(-Temp[4].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[4].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).z;\n" +" Temp[5].w = vec4(inversesqrt(Temp[4].w)).w;\n" +" Temp[5].z = Temp[5].z * Temp[5].w + -GlobalConstantBuffer_8;\n" +" Temp[5].z = clamp(Temp[5].z, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[0].x + 1.000000;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[5].z;\n" +" Temp[1].z = Temp[1].w * Temp[1].z + Temp[4].w;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[1].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[1].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[1].w * Temp[0].x + 1.000000;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[1].w + Temp[3].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[4].y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107 + Temp[4].x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[4].xy = vec4(Temp[0].yyyy * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].x * Temp[3].w + Temp[1].z;\n" +" Temp[4].xy = vec4(Temp[0].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[2].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = -PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[3].w;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(-0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.000000 + PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * 0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].z;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[4].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].z = vec4(inversesqrt(Temp[0].y)).z;\n" +" Temp[3].w = Temp[3].w * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[0].y = Temp[0].y * Temp[0].x + 1.000000;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].y = Temp[3].w * Temp[0].y + Temp[1].z;\n" +" Temp[4].zw = vec4(Temp[0].wwww * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[1].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[3].w = vec4(inversesqrt(Temp[0].w)).w;\n" +" Temp[1].z = Temp[1].z * Temp[3].w + -GlobalConstantBuffer_8;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[0].w * Temp[0].x + 1.000000;\n" +" Temp[0].w = clamp(Temp[0].w, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].z * Temp[0].w + Temp[1].w;\n" +" Temp[1].zw = vec4(Temp[2].wwww * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].w * Temp[1].z + Temp[0].w;\n" +" Temp[1].zw = vec4(Temp[0].zzzz * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[1].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[1].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[1].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[1].xyxx).xy;\n" +" Temp[1].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[0].z = vec4(dot((Temp[1].xyzx).xyz, (Temp[1].xyzx).xyz)).z;\n" +" Temp[1].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[1].xyzx).xyz)).x;\n" +" Temp[1].y = vec4(inversesqrt(Temp[0].z)).y;\n" +" Temp[1].x = Temp[1].x * Temp[1].y + -GlobalConstantBuffer_8;\n" +" Temp[1].x = clamp(Temp[1].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[0].z * Temp[0].x + 1.000000;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[1].x * Temp[0].x + Temp[0].w;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_10;\n" +" Temp[0].x = Temp[0].y * GlobalConstantBuffer_9 + Temp[0].x;\n" +" Output0.x = -Temp[0].x * 0.062500 + 1.000000;\n" +" Output0.x = clamp(Output0.x, 0.0, 1.0);\n" +" return;\n" +"}\n" +; +static const char* g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_2_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"struct PerPassConstantBuffer_0_Type {\n" +" vec4 f4Jitter;\n" +" vec2 f2Offset;\n" +" float fSliceIndex;\n" +" uint uSliceIndex;\n" +"};\n" +"uniform PerPassConstantBuffer {\n" +" PerPassConstantBuffer_0_Type PerPassConstantBuffer_0;\n" +"};\n" +"uniform sampler2DArray g_t0;\n" +"uniform sampler2DMS g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[8];\n" +"ivec4 Temp_int[8];\n" +"uvec4 Temp_uint[8];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(floor(Input0.xyxx)).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(4.000000, 4.000000, 0.000000, 0.000000) + PerPassConstantBuffer_0.f2Offset.xyxx.xyxx).xy;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_1.xyxx.xxxy).zw;\n" +" Temp[1].xy = vec4(Temp[0].zwzz * vec4(0.250000, 0.250000, 0.000000, 0.000000)).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[2].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[0].z = GlobalConstantBuffer_5 / Temp[2].z;\n" +" Temp[0].w = GlobalConstantBuffer_24 / Temp[0].z;\n" +" Temp[0].w = vec4(max(Temp[0].w, 1.000000)).w;\n" +" Temp[0].z = Temp[0].w * Temp[0].z;\n" +" Temp[1].z = GlobalConstantBuffer_25 / Temp[0].z;\n" +" Temp[1].z = vec4(min(Temp[1].z, 1.000000)).z;\n" +" Temp[0].z = Temp[0].z * Temp[1].z;\n" +" Temp_uint[1].w = ((Temp[0].z)< (1.000000)) ? 0xFFFFFFFFu : 0u;\n" +" if((Temp_uint[1].w)!=0u){\n" +" Output0.x = vec4(1.000000).x;\n" +" return;\n" +" //ENDIF\n" +" }\n" +" Temp[3].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[1].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[2].xy = vec4(Temp[2].zzzz * Temp[3].xyxx).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx + GlobalConstantBuffer_21.xyxx.xyxx).xy;\n" +" Temp_int[3].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[3].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[3].xyz = texelFetch(g_t1, ivec2((Temp_int[3]).xy), 0).xyz;\n" +" Temp[3].xyz = vec4(Temp[3].xyzx * GlobalConstantBuffer_28 + GlobalConstantBuffer_29).xyz;\n" +" Temp[4].xyz = vec4(Temp[3].yyyy * GlobalConstantBuffer_27[1].xyzx).xyz;\n" +" Temp[3].xyw = vec4(Temp[3].xxxx * GlobalConstantBuffer_27[0].xyxz + Temp[4].xyxz).xyw;\n" +" Temp[3].xyz = vec4(Temp[3].zzzz * GlobalConstantBuffer_27[2].xyzx + Temp[3].xywx).xyz;\n" +" Temp[0].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[3].xyzx).xyz)).x;\n" +" Temp[0].x = vec4(inversesqrt(Temp[0].x)).x;\n" +" Temp[3].xyz = vec4(Temp[0].xxxx * Temp[3].xyzx).xyz;\n" +" Temp[0].x = Temp[0].w * Temp[0].w;\n" +" Temp[0].x = vec4(vec4(1.000000, 1.000000, 1.000000, 1.000000) / Temp[0].x).x;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_7;\n" +" Temp[0].y = Temp[1].z * Temp[1].z;\n" +" Temp[0].y = vec4(vec4(1.000000, 1.000000, 1.000000, 1.000000) / Temp[0].y).y;\n" +" Temp[0].x = Temp[0].y * Temp[0].x;\n" +" Temp[0].y = Temp[0].z * 0.050000;\n" +" Temp[0].y = PerPassConstantBuffer_0.f4Jitter.z * Temp[0].y + 1.000000;\n" +" Temp[4].xyz = vec4(PerPassConstantBuffer_0.f4Jitter.xyyx * vec4(1.000000, -1.000000, -0.707107, 0.000000)).xyz;\n" +" Temp[1].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].w = Temp[0].z * 0.050000 + Temp[0].y;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[0].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[2].w = Temp[0].z * 0.050000 + Temp[0].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[2].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[0].z = Temp[0].z * 0.050000 + Temp[2].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[5].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[5].y = vec4(inversesqrt(Temp[5].w)).y;\n" +" Temp[5].x = Temp[5].x * Temp[5].y + -GlobalConstantBuffer_8;\n" +" Temp[5].x = clamp(Temp[5].x, 0.0, 1.0);\n" +" Temp[5].y = Temp[5].w * Temp[0].x + 1.000000;\n" +" Temp[5].y = clamp(Temp[5].y, 0.0, 1.0);\n" +" Temp[5].x = Temp[5].y * Temp[5].x;\n" +" Temp[3].w = Temp[4].w * Temp[3].w + Temp[5].x;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * Temp[0].zzzz).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[5].x = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[5].x)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[4].y = Temp[5].x * Temp[0].x + 1.000000;\n" +" Temp[4].y = clamp(Temp[4].y, 0.0, 1.0);\n" +" Temp[3].w = Temp[4].x * Temp[4].y + Temp[3].w;\n" +" Temp[4].xy = vec4(PerPassConstantBuffer_0.f4Jitter.xyxx * vec4(0.707107, 0.707107, 0.000000, 0.000000)).xy;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].y;\n" +" Temp[4].w = Temp[4].x + Temp[4].y;\n" +" Temp[5].y = vec4(-Temp[4].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[4].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).z;\n" +" Temp[5].w = vec4(inversesqrt(Temp[4].w)).w;\n" +" Temp[5].z = Temp[5].z * Temp[5].w + -GlobalConstantBuffer_8;\n" +" Temp[5].z = clamp(Temp[5].z, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[0].x + 1.000000;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[5].z;\n" +" Temp[1].z = Temp[1].w * Temp[1].z + Temp[4].w;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[1].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[1].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[1].w * Temp[0].x + 1.000000;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[1].w + Temp[3].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[4].y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107 + Temp[4].x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[4].xy = vec4(Temp[0].yyyy * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].x * Temp[3].w + Temp[1].z;\n" +" Temp[4].xy = vec4(Temp[0].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[2].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = -PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[3].w;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(-0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.000000 + PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * 0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].z;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[4].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].z = vec4(inversesqrt(Temp[0].y)).z;\n" +" Temp[3].w = Temp[3].w * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[0].y = Temp[0].y * Temp[0].x + 1.000000;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].y = Temp[3].w * Temp[0].y + Temp[1].z;\n" +" Temp[4].zw = vec4(Temp[0].wwww * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[1].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[3].w = vec4(inversesqrt(Temp[0].w)).w;\n" +" Temp[1].z = Temp[1].z * Temp[3].w + -GlobalConstantBuffer_8;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[0].w * Temp[0].x + 1.000000;\n" +" Temp[0].w = clamp(Temp[0].w, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].z * Temp[0].w + Temp[1].w;\n" +" Temp[1].zw = vec4(Temp[2].wwww * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].w * Temp[1].z + Temp[0].w;\n" +" Temp[1].zw = vec4(Temp[0].zzzz * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[1].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[1].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[1].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[1].xyxx).xy;\n" +" Temp[1].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[0].z = vec4(dot((Temp[1].xyzx).xyz, (Temp[1].xyzx).xyz)).z;\n" +" Temp[1].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[1].xyzx).xyz)).x;\n" +" Temp[1].y = vec4(inversesqrt(Temp[0].z)).y;\n" +" Temp[1].x = Temp[1].x * Temp[1].y + -GlobalConstantBuffer_8;\n" +" Temp[1].x = clamp(Temp[1].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[0].z * Temp[0].x + 1.000000;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[1].x * Temp[0].x + Temp[0].w;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_10;\n" +" Temp[0].x = Temp[0].y * GlobalConstantBuffer_9 + Temp[0].x;\n" +" Output0.x = -Temp[0].x * 0.062500 + 1.000000;\n" +" Output0.x = clamp(Output0.x, 0.0, 1.0);\n" +" return;\n" +"}\n" +; +static const char* g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_0_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"struct PerPassConstantBuffer_0_Type {\n" +" vec4 f4Jitter;\n" +" vec2 f2Offset;\n" +" float fSliceIndex;\n" +" uint uSliceIndex;\n" +"};\n" +"uniform PerPassConstantBuffer {\n" +" PerPassConstantBuffer_0_Type PerPassConstantBuffer_0;\n" +"};\n" +"uniform sampler2DArray g_t0;\n" +"uniform sampler2D g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[8];\n" +"ivec4 Temp_int[8];\n" +"uvec4 Temp_uint[8];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(floor(Input0.xyxx)).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(4.000000, 4.000000, 0.000000, 0.000000) + PerPassConstantBuffer_0.f2Offset.xyxx.xyxx).xy;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_1.xyxx.xxxy).zw;\n" +" Temp[1].xy = vec4(Temp[0].zwzz * vec4(0.250000, 0.250000, 0.000000, 0.000000)).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[2].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[0].z = GlobalConstantBuffer_5 / Temp[2].z;\n" +" Temp[0].w = GlobalConstantBuffer_24 / Temp[0].z;\n" +" Temp[0].w = vec4(max(Temp[0].w, 1.000000)).w;\n" +" Temp[0].z = Temp[0].w * Temp[0].z;\n" +" Temp[1].z = GlobalConstantBuffer_25 / Temp[0].z;\n" +" Temp[1].z = vec4(min(Temp[1].z, 1.000000)).z;\n" +" Temp[0].z = Temp[0].z * Temp[1].z;\n" +" Temp_uint[1].w = ((Temp[0].z)< (1.000000)) ? 0xFFFFFFFFu : 0u;\n" +" if((Temp_uint[1].w)!=0u){\n" +" Output0.x = vec4(1.000000).x;\n" +" return;\n" +" //ENDIF\n" +" }\n" +" Temp[3].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[1].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[2].xy = vec4(Temp[2].zzzz * Temp[3].xyxx).xy;\n" +" Temp_int[3].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[3].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[3].xyz = texelFetch(g_t1, ivec2((Temp_int[3]).xy), 0).xyz;\n" +" Temp[3].xyz = vec4(Temp[3].xyzx * vec4(2.000000, 2.000000, 2.000000, 0.000000) + vec4(-1.000000, -1.000000, -1.000000, 0.000000)).xyz;\n" +" Temp[0].x = Temp[0].w * Temp[0].w;\n" +" Temp[0].x = vec4(vec4(1.000000, 1.000000, 1.000000, 1.000000) / Temp[0].x).x;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_7;\n" +" Temp[0].y = Temp[1].z * Temp[1].z;\n" +" Temp[0].y = vec4(vec4(1.000000, 1.000000, 1.000000, 1.000000) / Temp[0].y).y;\n" +" Temp[0].x = Temp[0].y * Temp[0].x;\n" +" Temp[0].y = Temp[0].z * 0.050000;\n" +" Temp[0].y = PerPassConstantBuffer_0.f4Jitter.z * Temp[0].y + 1.000000;\n" +" Temp[4].xyz = vec4(PerPassConstantBuffer_0.f4Jitter.xyyx * vec4(1.000000, -1.000000, -0.707107, 0.000000)).xyz;\n" +" Temp[1].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].w = Temp[0].z * 0.050000 + Temp[0].y;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[0].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[2].w = Temp[0].z * 0.050000 + Temp[0].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[2].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[0].z = Temp[0].z * 0.050000 + Temp[2].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[5].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[5].y = vec4(inversesqrt(Temp[5].w)).y;\n" +" Temp[5].x = Temp[5].x * Temp[5].y + -GlobalConstantBuffer_8;\n" +" Temp[5].x = clamp(Temp[5].x, 0.0, 1.0);\n" +" Temp[5].y = Temp[5].w * Temp[0].x + 1.000000;\n" +" Temp[5].y = clamp(Temp[5].y, 0.0, 1.0);\n" +" Temp[5].x = Temp[5].y * Temp[5].x;\n" +" Temp[3].w = Temp[4].w * Temp[3].w + Temp[5].x;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * Temp[0].zzzz).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[5].x = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[5].x)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[4].y = Temp[5].x * Temp[0].x + 1.000000;\n" +" Temp[4].y = clamp(Temp[4].y, 0.0, 1.0);\n" +" Temp[3].w = Temp[4].x * Temp[4].y + Temp[3].w;\n" +" Temp[4].xy = vec4(PerPassConstantBuffer_0.f4Jitter.xyxx * vec4(0.707107, 0.707107, 0.000000, 0.000000)).xy;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].y;\n" +" Temp[4].w = Temp[4].x + Temp[4].y;\n" +" Temp[5].y = vec4(-Temp[4].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[4].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).z;\n" +" Temp[5].w = vec4(inversesqrt(Temp[4].w)).w;\n" +" Temp[5].z = Temp[5].z * Temp[5].w + -GlobalConstantBuffer_8;\n" +" Temp[5].z = clamp(Temp[5].z, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[0].x + 1.000000;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[5].z;\n" +" Temp[1].z = Temp[1].w * Temp[1].z + Temp[4].w;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[1].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[1].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[1].w * Temp[0].x + 1.000000;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[1].w + Temp[3].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[4].y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107 + Temp[4].x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[4].xy = vec4(Temp[0].yyyy * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].x * Temp[3].w + Temp[1].z;\n" +" Temp[4].xy = vec4(Temp[0].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[2].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = -PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[3].w;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(-0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.000000 + PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * 0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].z;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[4].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].z = vec4(inversesqrt(Temp[0].y)).z;\n" +" Temp[3].w = Temp[3].w * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[0].y = Temp[0].y * Temp[0].x + 1.000000;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].y = Temp[3].w * Temp[0].y + Temp[1].z;\n" +" Temp[4].zw = vec4(Temp[0].wwww * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[1].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[3].w = vec4(inversesqrt(Temp[0].w)).w;\n" +" Temp[1].z = Temp[1].z * Temp[3].w + -GlobalConstantBuffer_8;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[0].w * Temp[0].x + 1.000000;\n" +" Temp[0].w = clamp(Temp[0].w, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].z * Temp[0].w + Temp[1].w;\n" +" Temp[1].zw = vec4(Temp[2].wwww * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].w * Temp[1].z + Temp[0].w;\n" +" Temp[1].zw = vec4(Temp[0].zzzz * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[1].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[1].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[1].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[1].xyxx).xy;\n" +" Temp[1].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[0].z = vec4(dot((Temp[1].xyzx).xyz, (Temp[1].xyzx).xyz)).z;\n" +" Temp[1].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[1].xyzx).xyz)).x;\n" +" Temp[1].y = vec4(inversesqrt(Temp[0].z)).y;\n" +" Temp[1].x = Temp[1].x * Temp[1].y + -GlobalConstantBuffer_8;\n" +" Temp[1].x = clamp(Temp[1].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[0].z * Temp[0].x + 1.000000;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[1].x * Temp[0].x + Temp[0].w;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_10;\n" +" Temp[0].x = Temp[0].y * GlobalConstantBuffer_9 + Temp[0].x;\n" +" Temp[0].x = Temp[0].x * 0.031250;\n" +" Temp[0].y = Temp[2].z * GlobalConstantBuffer_22 + 1.000000;\n" +" Temp[0].y = Temp[0].y * GlobalConstantBuffer_23;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].x = vec4(dot((Temp[0].xxxx).xy, (Temp[0].yyyy).xy)).x;\n" +" Output0.x = -Temp[0].x + 1.000000;\n" +" Output0.x = clamp(Output0.x, 0.0, 1.0);\n" +" return;\n" +"}\n" +; +static const char* g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_1_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"struct PerPassConstantBuffer_0_Type {\n" +" vec4 f4Jitter;\n" +" vec2 f2Offset;\n" +" float fSliceIndex;\n" +" uint uSliceIndex;\n" +"};\n" +"uniform PerPassConstantBuffer {\n" +" PerPassConstantBuffer_0_Type PerPassConstantBuffer_0;\n" +"};\n" +"uniform sampler2DArray g_t0;\n" +"uniform sampler2D g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[8];\n" +"ivec4 Temp_int[8];\n" +"uvec4 Temp_uint[8];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(floor(Input0.xyxx)).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(4.000000, 4.000000, 0.000000, 0.000000) + PerPassConstantBuffer_0.f2Offset.xyxx.xyxx).xy;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_1.xyxx.xxxy).zw;\n" +" Temp[1].xy = vec4(Temp[0].zwzz * vec4(0.250000, 0.250000, 0.000000, 0.000000)).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[2].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[0].z = GlobalConstantBuffer_5 / Temp[2].z;\n" +" Temp[0].w = GlobalConstantBuffer_24 / Temp[0].z;\n" +" Temp[0].w = vec4(max(Temp[0].w, 1.000000)).w;\n" +" Temp[0].z = Temp[0].w * Temp[0].z;\n" +" Temp[1].z = GlobalConstantBuffer_25 / Temp[0].z;\n" +" Temp[1].z = vec4(min(Temp[1].z, 1.000000)).z;\n" +" Temp[0].z = Temp[0].z * Temp[1].z;\n" +" Temp_uint[1].w = ((Temp[0].z)< (1.000000)) ? 0xFFFFFFFFu : 0u;\n" +" if((Temp_uint[1].w)!=0u){\n" +" Output0.x = vec4(1.000000).x;\n" +" return;\n" +" //ENDIF\n" +" }\n" +" Temp[3].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[1].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[2].xy = vec4(Temp[2].zzzz * Temp[3].xyxx).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx + GlobalConstantBuffer_21.xyxx.xyxx).xy;\n" +" Temp_int[3].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[3].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[3].xyz = texelFetch(g_t1, ivec2((Temp_int[3]).xy), 0).xyz;\n" +" Temp[3].xyz = vec4(Temp[3].xyzx * GlobalConstantBuffer_28 + GlobalConstantBuffer_29).xyz;\n" +" Temp[4].xyz = vec4(Temp[3].yyyy * GlobalConstantBuffer_27[1].xyzx).xyz;\n" +" Temp[3].xyw = vec4(Temp[3].xxxx * GlobalConstantBuffer_27[0].xyxz + Temp[4].xyxz).xyw;\n" +" Temp[3].xyz = vec4(Temp[3].zzzz * GlobalConstantBuffer_27[2].xyzx + Temp[3].xywx).xyz;\n" +" Temp[0].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[3].xyzx).xyz)).x;\n" +" Temp[0].x = vec4(inversesqrt(Temp[0].x)).x;\n" +" Temp[3].xyz = vec4(Temp[0].xxxx * Temp[3].xyzx).xyz;\n" +" Temp[0].x = Temp[0].w * Temp[0].w;\n" +" Temp[0].x = vec4(vec4(1.000000, 1.000000, 1.000000, 1.000000) / Temp[0].x).x;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_7;\n" +" Temp[0].y = Temp[1].z * Temp[1].z;\n" +" Temp[0].y = vec4(vec4(1.000000, 1.000000, 1.000000, 1.000000) / Temp[0].y).y;\n" +" Temp[0].x = Temp[0].y * Temp[0].x;\n" +" Temp[0].y = Temp[0].z * 0.050000;\n" +" Temp[0].y = PerPassConstantBuffer_0.f4Jitter.z * Temp[0].y + 1.000000;\n" +" Temp[4].xyz = vec4(PerPassConstantBuffer_0.f4Jitter.xyyx * vec4(1.000000, -1.000000, -0.707107, 0.000000)).xyz;\n" +" Temp[1].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].w = Temp[0].z * 0.050000 + Temp[0].y;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[0].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[2].w = Temp[0].z * 0.050000 + Temp[0].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[2].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[0].z = Temp[0].z * 0.050000 + Temp[2].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[5].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[5].y = vec4(inversesqrt(Temp[5].w)).y;\n" +" Temp[5].x = Temp[5].x * Temp[5].y + -GlobalConstantBuffer_8;\n" +" Temp[5].x = clamp(Temp[5].x, 0.0, 1.0);\n" +" Temp[5].y = Temp[5].w * Temp[0].x + 1.000000;\n" +" Temp[5].y = clamp(Temp[5].y, 0.0, 1.0);\n" +" Temp[5].x = Temp[5].y * Temp[5].x;\n" +" Temp[3].w = Temp[4].w * Temp[3].w + Temp[5].x;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * Temp[0].zzzz).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[5].x = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[5].x)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[4].y = Temp[5].x * Temp[0].x + 1.000000;\n" +" Temp[4].y = clamp(Temp[4].y, 0.0, 1.0);\n" +" Temp[3].w = Temp[4].x * Temp[4].y + Temp[3].w;\n" +" Temp[4].xy = vec4(PerPassConstantBuffer_0.f4Jitter.xyxx * vec4(0.707107, 0.707107, 0.000000, 0.000000)).xy;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].y;\n" +" Temp[4].w = Temp[4].x + Temp[4].y;\n" +" Temp[5].y = vec4(-Temp[4].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[4].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).z;\n" +" Temp[5].w = vec4(inversesqrt(Temp[4].w)).w;\n" +" Temp[5].z = Temp[5].z * Temp[5].w + -GlobalConstantBuffer_8;\n" +" Temp[5].z = clamp(Temp[5].z, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[0].x + 1.000000;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[5].z;\n" +" Temp[1].z = Temp[1].w * Temp[1].z + Temp[4].w;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[1].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[1].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[1].w * Temp[0].x + 1.000000;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[1].w + Temp[3].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[4].y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107 + Temp[4].x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[4].xy = vec4(Temp[0].yyyy * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].x * Temp[3].w + Temp[1].z;\n" +" Temp[4].xy = vec4(Temp[0].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[2].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = -PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[3].w;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(-0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.000000 + PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * 0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].z;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[4].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].z = vec4(inversesqrt(Temp[0].y)).z;\n" +" Temp[3].w = Temp[3].w * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[0].y = Temp[0].y * Temp[0].x + 1.000000;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].y = Temp[3].w * Temp[0].y + Temp[1].z;\n" +" Temp[4].zw = vec4(Temp[0].wwww * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[1].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[3].w = vec4(inversesqrt(Temp[0].w)).w;\n" +" Temp[1].z = Temp[1].z * Temp[3].w + -GlobalConstantBuffer_8;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[0].w * Temp[0].x + 1.000000;\n" +" Temp[0].w = clamp(Temp[0].w, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].z * Temp[0].w + Temp[1].w;\n" +" Temp[1].zw = vec4(Temp[2].wwww * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].w * Temp[1].z + Temp[0].w;\n" +" Temp[1].zw = vec4(Temp[0].zzzz * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[1].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[1].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[1].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[1].xyxx).xy;\n" +" Temp[1].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[0].z = vec4(dot((Temp[1].xyzx).xyz, (Temp[1].xyzx).xyz)).z;\n" +" Temp[1].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[1].xyzx).xyz)).x;\n" +" Temp[1].y = vec4(inversesqrt(Temp[0].z)).y;\n" +" Temp[1].x = Temp[1].x * Temp[1].y + -GlobalConstantBuffer_8;\n" +" Temp[1].x = clamp(Temp[1].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[0].z * Temp[0].x + 1.000000;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[1].x * Temp[0].x + Temp[0].w;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_10;\n" +" Temp[0].x = Temp[0].y * GlobalConstantBuffer_9 + Temp[0].x;\n" +" Temp[0].x = Temp[0].x * 0.031250;\n" +" Temp[0].y = Temp[2].z * GlobalConstantBuffer_22 + 1.000000;\n" +" Temp[0].y = Temp[0].y * GlobalConstantBuffer_23;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].x = vec4(dot((Temp[0].xxxx).xy, (Temp[0].yyyy).xy)).x;\n" +" Output0.x = -Temp[0].x + 1.000000;\n" +" Output0.x = clamp(Output0.x, 0.0, 1.0);\n" +" return;\n" +"}\n" +; +static const char* g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_2_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"struct PerPassConstantBuffer_0_Type {\n" +" vec4 f4Jitter;\n" +" vec2 f2Offset;\n" +" float fSliceIndex;\n" +" uint uSliceIndex;\n" +"};\n" +"uniform PerPassConstantBuffer {\n" +" PerPassConstantBuffer_0_Type PerPassConstantBuffer_0;\n" +"};\n" +"uniform sampler2DArray g_t0;\n" +"uniform sampler2DMS g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[8];\n" +"ivec4 Temp_int[8];\n" +"uvec4 Temp_uint[8];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(floor(Input0.xyxx)).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(4.000000, 4.000000, 0.000000, 0.000000) + PerPassConstantBuffer_0.f2Offset.xyxx.xyxx).xy;\n" +" Temp[0].zw = vec4(Temp[0].xxxy * GlobalConstantBuffer_1.xyxx.xxxy).zw;\n" +" Temp[1].xy = vec4(Temp[0].zwzz * vec4(0.250000, 0.250000, 0.000000, 0.000000)).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[2].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[0].z = GlobalConstantBuffer_5 / Temp[2].z;\n" +" Temp[0].w = GlobalConstantBuffer_24 / Temp[0].z;\n" +" Temp[0].w = vec4(max(Temp[0].w, 1.000000)).w;\n" +" Temp[0].z = Temp[0].w * Temp[0].z;\n" +" Temp[1].z = GlobalConstantBuffer_25 / Temp[0].z;\n" +" Temp[1].z = vec4(min(Temp[1].z, 1.000000)).z;\n" +" Temp[0].z = Temp[0].z * Temp[1].z;\n" +" Temp_uint[1].w = ((Temp[0].z)< (1.000000)) ? 0xFFFFFFFFu : 0u;\n" +" if((Temp_uint[1].w)!=0u){\n" +" Output0.x = vec4(1.000000).x;\n" +" return;\n" +" //ENDIF\n" +" }\n" +" Temp[3].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[1].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[2].xy = vec4(Temp[2].zzzz * Temp[3].xyxx).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx + GlobalConstantBuffer_21.xyxx.xyxx).xy;\n" +" Temp_int[3].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[3].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[3].xyz = texelFetch(g_t1, ivec2((Temp_int[3]).xy), 0).xyz;\n" +" Temp[3].xyz = vec4(Temp[3].xyzx * GlobalConstantBuffer_28 + GlobalConstantBuffer_29).xyz;\n" +" Temp[4].xyz = vec4(Temp[3].yyyy * GlobalConstantBuffer_27[1].xyzx).xyz;\n" +" Temp[3].xyw = vec4(Temp[3].xxxx * GlobalConstantBuffer_27[0].xyxz + Temp[4].xyxz).xyw;\n" +" Temp[3].xyz = vec4(Temp[3].zzzz * GlobalConstantBuffer_27[2].xyzx + Temp[3].xywx).xyz;\n" +" Temp[0].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[3].xyzx).xyz)).x;\n" +" Temp[0].x = vec4(inversesqrt(Temp[0].x)).x;\n" +" Temp[3].xyz = vec4(Temp[0].xxxx * Temp[3].xyzx).xyz;\n" +" Temp[0].x = Temp[0].w * Temp[0].w;\n" +" Temp[0].x = vec4(vec4(1.000000, 1.000000, 1.000000, 1.000000) / Temp[0].x).x;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_7;\n" +" Temp[0].y = Temp[1].z * Temp[1].z;\n" +" Temp[0].y = vec4(vec4(1.000000, 1.000000, 1.000000, 1.000000) / Temp[0].y).y;\n" +" Temp[0].x = Temp[0].y * Temp[0].x;\n" +" Temp[0].y = Temp[0].z * 0.050000;\n" +" Temp[0].y = PerPassConstantBuffer_0.f4Jitter.z * Temp[0].y + 1.000000;\n" +" Temp[4].xyz = vec4(PerPassConstantBuffer_0.f4Jitter.xyyx * vec4(1.000000, -1.000000, -0.707107, 0.000000)).xyz;\n" +" Temp[1].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[0].w = Temp[0].z * 0.050000 + Temp[0].y;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[0].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[2].w = Temp[0].z * 0.050000 + Temp[0].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[5].xy = vec4(Temp[4].xyxx * Temp[2].wwww).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[0].z = Temp[0].z * 0.050000 + Temp[2].w;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[5].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).x;\n" +" Temp[5].y = vec4(inversesqrt(Temp[5].w)).y;\n" +" Temp[5].x = Temp[5].x * Temp[5].y + -GlobalConstantBuffer_8;\n" +" Temp[5].x = clamp(Temp[5].x, 0.0, 1.0);\n" +" Temp[5].y = Temp[5].w * Temp[0].x + 1.000000;\n" +" Temp[5].y = clamp(Temp[5].y, 0.0, 1.0);\n" +" Temp[5].x = Temp[5].y * Temp[5].x;\n" +" Temp[3].w = Temp[4].w * Temp[3].w + Temp[5].x;\n" +" Temp[4].xy = vec4(Temp[4].xyxx * Temp[0].zzzz).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[5].x = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[5].x)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[4].y = Temp[5].x * Temp[0].x + 1.000000;\n" +" Temp[4].y = clamp(Temp[4].y, 0.0, 1.0);\n" +" Temp[3].w = Temp[4].x * Temp[4].y + Temp[3].w;\n" +" Temp[4].xy = vec4(PerPassConstantBuffer_0.f4Jitter.xyxx * vec4(0.707107, 0.707107, 0.000000, 0.000000)).xy;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].y;\n" +" Temp[4].w = Temp[4].x + Temp[4].y;\n" +" Temp[5].y = vec4(-Temp[4].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[4].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).z;\n" +" Temp[5].w = vec4(inversesqrt(Temp[4].w)).w;\n" +" Temp[5].z = Temp[5].z * Temp[5].w + -GlobalConstantBuffer_8;\n" +" Temp[5].z = clamp(Temp[5].z, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[0].x + 1.000000;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[4].w = Temp[4].w * Temp[5].z;\n" +" Temp[1].z = Temp[1].w * Temp[1].z + Temp[4].w;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[1].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[1].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[1].w * Temp[0].x + 1.000000;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[1].w + Temp[3].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[5].zw = vec4(Temp[0].yyyy * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].zw = vec4(Temp[0].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].zw = vec4(Temp[2].wwww * Temp[5].xxxy).zw;\n" +" Temp[5].zw = vec4(roundEven(Temp[5].zzzw)).zw;\n" +" Temp[6].xy = vec4(Temp[5].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[7].z = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzxw).z;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[7].xy = vec4(Temp[7].zzzz * Temp[5].zwzz).xy;\n" +" Temp[6].xyz = vec4(-Temp[2].xyzx + Temp[7].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[6].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[6].xyzx).xyz)).w;\n" +" Temp[5].z = vec4(inversesqrt(Temp[3].w)).z;\n" +" Temp[4].w = Temp[4].w * Temp[5].z + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[4].y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107 + Temp[4].x;\n" +" Temp[5].y = vec4(-Temp[3].w).y;\n" +" Temp[4].xy = vec4(Temp[0].yyyy * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].x * Temp[3].w + Temp[1].z;\n" +" Temp[4].xy = vec4(Temp[0].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[2].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[6].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[6].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[6].xyz, 0.000000).yzwx).w;\n" +" Temp[5].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[6].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].zwzz).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[5].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = -PerPassConstantBuffer_0.f4Jitter.y * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.x * -0.000000 + -PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * -0.707107;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * -0.707107 + -Temp[3].w;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(-0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.000000 + PerPassConstantBuffer_0.f4Jitter.y;\n" +" Temp[3].w = PerPassConstantBuffer_0.f4Jitter.y * 0.000000 + -PerPassConstantBuffer_0.f4Jitter.x;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[5].xy = vec4(Temp[0].yyyy * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[4].w * Temp[3].w + Temp[1].z;\n" +" Temp[5].xy = vec4(Temp[0].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[5].xy = vec4(Temp[2].wwww * Temp[4].xyxx).xy;\n" +" Temp[5].xy = vec4(roundEven(Temp[5].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[5].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[5].xyxx).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[3].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[5].x = vec4(inversesqrt(Temp[3].w)).x;\n" +" Temp[4].w = Temp[4].w * Temp[5].x + -GlobalConstantBuffer_8;\n" +" Temp[4].w = clamp(Temp[4].w, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].w * Temp[3].w + Temp[1].w;\n" +" Temp[4].xy = vec4(Temp[0].zzzz * Temp[4].xyxx).xy;\n" +" Temp[4].xy = vec4(roundEven(Temp[4].xyxx)).xy;\n" +" Temp[5].xy = vec4(Temp[4].xyxx * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].w = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzwx).w;\n" +" Temp[5].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[5].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].wwww * Temp[5].xyxx).xy;\n" +" Temp[4].xyw = vec4(-Temp[2].xyxz + Temp[4].xyxw).xyw;\n" +" Temp[3].w = vec4(dot((Temp[4].xywx).xyz, (Temp[4].xywx).xyz)).w;\n" +" Temp[4].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[4].xywx).xyz)).x;\n" +" Temp[4].y = vec4(inversesqrt(Temp[3].w)).y;\n" +" Temp[4].x = Temp[4].x * Temp[4].y + -GlobalConstantBuffer_8;\n" +" Temp[4].x = clamp(Temp[4].x, 0.0, 1.0);\n" +" Temp[3].w = Temp[3].w * Temp[0].x + 1.000000;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[1].w = Temp[4].x * Temp[3].w + Temp[1].w;\n" +" Temp[4].x = PerPassConstantBuffer_0.f4Jitter.x * 0.707107 + -Temp[4].z;\n" +" Temp[3].w = vec4(dot((PerPassConstantBuffer_0.f4Jitter.yxyy).xy, (vec4(0.707107, -0.707107, 0.000000, 0.000000)).xy)).w;\n" +" Temp[4].y = vec4(-Temp[3].w).y;\n" +" Temp[4].zw = vec4(Temp[0].yyyy * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].y = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).y;\n" +" Temp[3].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[4].z = vec4(inversesqrt(Temp[0].y)).z;\n" +" Temp[3].w = Temp[3].w * Temp[4].z + -GlobalConstantBuffer_8;\n" +" Temp[3].w = clamp(Temp[3].w, 0.0, 1.0);\n" +" Temp[0].y = Temp[0].y * Temp[0].x + 1.000000;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].y = Temp[3].w * Temp[0].y + Temp[1].z;\n" +" Temp[4].zw = vec4(Temp[0].wwww * Temp[4].xxxy).zw;\n" +" Temp[4].zw = vec4(roundEven(Temp[4].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[4].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[4].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[4].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[0].w = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[1].z = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[3].w = vec4(inversesqrt(Temp[0].w)).w;\n" +" Temp[1].z = Temp[1].z * Temp[3].w + -GlobalConstantBuffer_8;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[0].w * Temp[0].x + 1.000000;\n" +" Temp[0].w = clamp(Temp[0].w, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].z * Temp[0].w + Temp[1].w;\n" +" Temp[1].zw = vec4(Temp[2].wwww * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[5].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[5].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[6].z = (textureLod(g_t0, Temp[5].xyz, 0.000000).yzxw).z;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[5].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[6].xy = vec4(Temp[6].zzzz * Temp[1].zwzz).xy;\n" +" Temp[5].xyz = vec4(-Temp[2].xyzx + Temp[6].xyzx).xyz;\n" +" Temp[1].z = vec4(dot((Temp[5].xyzx).xyz, (Temp[5].xyzx).xyz)).z;\n" +" Temp[1].w = vec4(dot((Temp[3].xyzx).xyz, (Temp[5].xyzx).xyz)).w;\n" +" Temp[2].w = vec4(inversesqrt(Temp[1].z)).w;\n" +" Temp[1].w = Temp[1].w * Temp[2].w + -GlobalConstantBuffer_8;\n" +" Temp[1].w = clamp(Temp[1].w, 0.0, 1.0);\n" +" Temp[1].z = Temp[1].z * Temp[0].x + 1.000000;\n" +" Temp[1].z = clamp(Temp[1].z, 0.0, 1.0);\n" +" Temp[0].w = Temp[1].w * Temp[1].z + Temp[0].w;\n" +" Temp[1].zw = vec4(Temp[0].zzzz * Temp[4].xxxy).zw;\n" +" Temp[1].zw = vec4(roundEven(Temp[1].zzzw)).zw;\n" +" Temp[1].xy = vec4(Temp[1].zwzz * GlobalConstantBuffer_1.xyxx.xyxx + Temp[1].xyxx).xy;\n" +" Temp[1].z = vec4(PerPassConstantBuffer_0.fSliceIndex).z;\n" +" Temp[4].z = (textureLod(g_t0, Temp[1].xyz, 0.000000).yzxw).z;\n" +" Temp[1].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[1].xyxx + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[4].xy = vec4(Temp[4].zzzz * Temp[1].xyxx).xy;\n" +" Temp[1].xyz = vec4(-Temp[2].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[0].z = vec4(dot((Temp[1].xyzx).xyz, (Temp[1].xyzx).xyz)).z;\n" +" Temp[1].x = vec4(dot((Temp[3].xyzx).xyz, (Temp[1].xyzx).xyz)).x;\n" +" Temp[1].y = vec4(inversesqrt(Temp[0].z)).y;\n" +" Temp[1].x = Temp[1].x * Temp[1].y + -GlobalConstantBuffer_8;\n" +" Temp[1].x = clamp(Temp[1].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[0].z * Temp[0].x + 1.000000;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[1].x * Temp[0].x + Temp[0].w;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_10;\n" +" Temp[0].x = Temp[0].y * GlobalConstantBuffer_9 + Temp[0].x;\n" +" Temp[0].x = Temp[0].x * 0.031250;\n" +" Temp[0].y = Temp[2].z * GlobalConstantBuffer_22 + 1.000000;\n" +" Temp[0].y = Temp[0].y * GlobalConstantBuffer_23;\n" +" Temp[0].y = clamp(Temp[0].y, 0.0, 1.0);\n" +" Temp[0].x = vec4(dot((Temp[0].xxxx).xy, (Temp[0].yyyy).xy)).x;\n" +" Output0.x = -Temp[0].x + 1.000000;\n" +" Output0.x = clamp(Output0.x, 0.0, 1.0);\n" +" return;\n" +"}\n" +; + +namespace Generated +{ + void CoarseAO_PS::Create(DevicePointer Device) + { + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_0_GL, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_0_GL)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_1_GL, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_1_GL)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_2_GL, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_2_GL)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_0_GL, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_0_GL)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_1_GL, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_1_GL)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_2_GL, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_2_GL)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_0_GL, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_0_GL)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_1_GL, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_1_GL)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_2_GL, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_2_GL)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_0_GL, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_0_GL)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_1_GL, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_1_GL)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_2_GL, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_0_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_2_GL)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_0_GL, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_0_GL)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_1_GL, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_1_GL)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_2_GL, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_2_GL)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_0_GL, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_0_GL)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_1_GL, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_1_GL)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_2_GL, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_0_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_2_GL)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_0_GL, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_0_GL)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_1_GL, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_1_GL)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_2_GL, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_0_FETCH_GBUFFER_NORMAL_2_GL)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_0_GL, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_0_GL)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_1_GL, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_1_GL)); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Create(Device, g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_2_GL, sizeof(g_CoarseAO_PS_ENABLE_FOREGROUND_AO_1_ENABLE_BACKGROUND_AO_1_ENABLE_DEPTH_THRESHOLD_1_FETCH_GBUFFER_NORMAL_2_GL)); + } + + void CoarseAO_PS::Release(DevicePointer Device) + { + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_0][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_0][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_0][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Release(Device); + m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_1][ShaderPermutations::ENABLE_BACKGROUND_AO_1][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_1][ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Release(Device); + } +} diff --git a/src/shaders/out/gl/CoarseAO_PS.h b/src/shaders/out/gl/CoarseAO_PS.h new file mode 100644 index 0000000..35da283 --- /dev/null +++ b/src/shaders/out/gl/CoarseAO_PS.h @@ -0,0 +1,72 @@ +//! This file was auto-generated. Do not modify manually. +#pragma once + +namespace Generated +{ + +namespace ShaderPermutations +{ + +#ifndef ENABLE_FOREGROUND_AO_DEFINED +#define ENABLE_FOREGROUND_AO_DEFINED + enum ENABLE_FOREGROUND_AO + { + ENABLE_FOREGROUND_AO_0, + ENABLE_FOREGROUND_AO_1, + ENABLE_FOREGROUND_AO_COUNT, + }; +#endif + +#ifndef ENABLE_BACKGROUND_AO_DEFINED +#define ENABLE_BACKGROUND_AO_DEFINED + enum ENABLE_BACKGROUND_AO + { + ENABLE_BACKGROUND_AO_0, + ENABLE_BACKGROUND_AO_1, + ENABLE_BACKGROUND_AO_COUNT, + }; +#endif + +#ifndef ENABLE_DEPTH_THRESHOLD_DEFINED +#define ENABLE_DEPTH_THRESHOLD_DEFINED + enum ENABLE_DEPTH_THRESHOLD + { + ENABLE_DEPTH_THRESHOLD_0, + ENABLE_DEPTH_THRESHOLD_1, + ENABLE_DEPTH_THRESHOLD_COUNT, + }; +#endif + +#ifndef FETCH_GBUFFER_NORMAL_DEFINED +#define FETCH_GBUFFER_NORMAL_DEFINED + enum FETCH_GBUFFER_NORMAL + { + FETCH_GBUFFER_NORMAL_0, + FETCH_GBUFFER_NORMAL_1, + FETCH_GBUFFER_NORMAL_2, + FETCH_GBUFFER_NORMAL_COUNT, + }; +#endif + +}; + +struct CoarseAO_PS +{ + void Create(DevicePointer Device); + void Release(DevicePointer Device); + GLSLPrograms::CoarseAO_PS& Get(ShaderPermutations::ENABLE_FOREGROUND_AO A, ShaderPermutations::ENABLE_BACKGROUND_AO B, ShaderPermutations::ENABLE_DEPTH_THRESHOLD C, ShaderPermutations::FETCH_GBUFFER_NORMAL D) + { + return m_Shader[A][B][C][D]; + } + +private: + GLSLPrograms::CoarseAO_PS m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_COUNT][ShaderPermutations::ENABLE_BACKGROUND_AO_COUNT][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_COUNT][ShaderPermutations::FETCH_GBUFFER_NORMAL_COUNT]; +#if _WIN32 + static_assert(ShaderPermutations::ENABLE_FOREGROUND_AO_COUNT == 2, ""); + static_assert(ShaderPermutations::ENABLE_BACKGROUND_AO_COUNT == 2, ""); + static_assert(ShaderPermutations::ENABLE_DEPTH_THRESHOLD_COUNT == 2, ""); + static_assert(ShaderPermutations::FETCH_GBUFFER_NORMAL_COUNT == 3, ""); +#endif +}; + +}; diff --git a/src/shaders/out/gl/CopyDepth_PS.cpp b/src/shaders/out/gl/CopyDepth_PS.cpp new file mode 100644 index 0000000..362b6f4 --- /dev/null +++ b/src/shaders/out/gl/CopyDepth_PS.cpp @@ -0,0 +1,139 @@ +static const char* g_CopyDepth_PS_RESOLVE_DEPTH_0_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"uniform sampler2D g_t0;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[1];\n" +"ivec4 Temp_int[1];\n" +"uvec4 Temp_uint[1];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(Input0.xyxx + GlobalConstantBuffer_21.xyxx.xyxx).xy;\n" +" Temp_int[0].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[0].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[0].x = texelFetch(g_t0, ivec2((Temp_int[0]).xy), 0).x;\n" +" Output0.x = vec4(Temp[0].x).x;\n" +" return;\n" +"}\n" +; +static const char* g_CopyDepth_PS_RESOLVE_DEPTH_1_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"uniform sampler2DMS g_t0;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[1];\n" +"ivec4 Temp_int[1];\n" +"uvec4 Temp_uint[1];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(Input0.xyxx + GlobalConstantBuffer_21.xyxx.xyxx).xy;\n" +" Temp_int[0].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[0].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[0].x = texelFetch(g_t0, ivec2((Temp_int[0]).xy), 0).x;\n" +" Output0.x = vec4(Temp[0].x).x;\n" +" return;\n" +"}\n" +; + +namespace Generated +{ + void CopyDepth_PS::Create(DevicePointer Device) + { + m_Shader[ShaderPermutations::RESOLVE_DEPTH_0].Create(Device, g_CopyDepth_PS_RESOLVE_DEPTH_0_GL, sizeof(g_CopyDepth_PS_RESOLVE_DEPTH_0_GL)); + m_Shader[ShaderPermutations::RESOLVE_DEPTH_1].Create(Device, g_CopyDepth_PS_RESOLVE_DEPTH_1_GL, sizeof(g_CopyDepth_PS_RESOLVE_DEPTH_1_GL)); + } + + void CopyDepth_PS::Release(DevicePointer Device) + { + m_Shader[ShaderPermutations::RESOLVE_DEPTH_0].Release(Device); + m_Shader[ShaderPermutations::RESOLVE_DEPTH_1].Release(Device); + } +} diff --git a/src/shaders/out/gl/CopyDepth_PS.h b/src/shaders/out/gl/CopyDepth_PS.h new file mode 100644 index 0000000..533b3a6 --- /dev/null +++ b/src/shaders/out/gl/CopyDepth_PS.h @@ -0,0 +1,38 @@ +//! This file was auto-generated. Do not modify manually. +#pragma once + +namespace Generated +{ + +namespace ShaderPermutations +{ + +#ifndef RESOLVE_DEPTH_DEFINED +#define RESOLVE_DEPTH_DEFINED + enum RESOLVE_DEPTH + { + RESOLVE_DEPTH_0, + RESOLVE_DEPTH_1, + RESOLVE_DEPTH_COUNT, + }; +#endif + +}; + +struct CopyDepth_PS +{ + void Create(DevicePointer Device); + void Release(DevicePointer Device); + GLSLPrograms::CopyDepth_PS& Get(ShaderPermutations::RESOLVE_DEPTH A) + { + return m_Shader[A]; + } + +private: + GLSLPrograms::CopyDepth_PS m_Shader[ShaderPermutations::RESOLVE_DEPTH_COUNT]; +#if _WIN32 + static_assert(ShaderPermutations::RESOLVE_DEPTH_COUNT == 2, ""); +#endif +}; + +}; diff --git a/src/shaders/out/gl/DebugNormals_PS.cpp b/src/shaders/out/gl/DebugNormals_PS.cpp new file mode 100644 index 0000000..f53ce0e --- /dev/null +++ b/src/shaders/out/gl/DebugNormals_PS.cpp @@ -0,0 +1,313 @@ +static const char* g_DebugNormals_PS_FETCH_GBUFFER_NORMAL_0_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"uniform sampler2D g_t0;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[5];\n" +"ivec4 Temp_int[5];\n" +"uvec4 Temp_uint[5];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].y = vec4(GlobalConstantBuffer_2.xxxy.z).y;\n" +" Temp[0].z = vec4(0.000000).z;\n" +" Temp[0].xw = vec4(Input0.yyyx + -GlobalConstantBuffer_21.xyxx.yyyx).xw;\n" +" Temp[0].yz = vec4(Temp[0].wwxw * GlobalConstantBuffer_2.xxxy.zzwz + Temp[0].yyzy).yz;\n" +" Temp[1].xy = vec4(GlobalConstantBuffer_3.xyxx.xyxx * Temp[0].yzyy + GlobalConstantBuffer_4.xxxy.zwzz).xy;\n" +" Temp[2].x = (textureLod(g_t0, Temp[0].yz, 0.000000)).x;\n" +" Temp[2].yz = vec4(Temp[1].xxyx * Temp[2].xxxx).yz;\n" +" Temp[0].yz = vec4(Temp[0].xxwx * GlobalConstantBuffer_2.xxxy.wwzw).yz;\n" +" Temp[1].xy = vec4(GlobalConstantBuffer_3.xyxx.yxyy * Temp[0].yzyy + GlobalConstantBuffer_4.xxxy.wzww).xy;\n" +" Temp[3].y = (textureLod(g_t0, Temp[0].zy, 0.000000).yxzw).y;\n" +" Temp[3].xz = vec4(Temp[1].xxyx * Temp[3].yyyy).xz;\n" +" Temp[1].xyz = vec4(Temp[2].xyzx + -Temp[3].yzxy).xyz;\n" +" Temp[0].y = vec4(dot((Temp[1].xyzx).xyz, (Temp[1].xyzx).xyz)).y;\n" +" Temp[2].y = vec4(-GlobalConstantBuffer_2.xxxy.z).y;\n" +" Temp[2].z = vec4(0.000000).z;\n" +" Temp[2].xy = vec4(Temp[0].wxww * GlobalConstantBuffer_2.xxxy.zwzz + Temp[2].yzyy).xy;\n" +" Temp[2].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[2].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[4].x = (textureLod(g_t0, Temp[2].xy, 0.000000)).x;\n" +" Temp[4].yz = vec4(Temp[2].zzwz * Temp[4].xxxx).yz;\n" +" Temp[2].xyz = vec4(Temp[3].yzxy + -Temp[4].xyzx).xyz;\n" +" Temp[0].z = vec4(dot((Temp[2].xyzx).xyz, (Temp[2].xyzx).xyz)).z;\n" +" Temp_uint[0].y = ((Temp[0].y)< (Temp[0].z)) ? 0xFFFFFFFFu : 0u;\n" +" if(vec4(Temp_uint[0].yyyy).x != 0.0) {\n" +" Temp[1].xyz = vec4(Temp[1].xyzx).xyz;\n" +" } else {\n" +" Temp[1].xyz = vec4(Temp[2].xyzx).xyz;\n" +" }\n" +" Temp[2].z = vec4(0.000000).z;\n" +" Temp[2].x = vec4(GlobalConstantBuffer_2.xxxy.w).x;\n" +" Temp[0].yz = vec4(Temp[0].xxwx * GlobalConstantBuffer_2.xxxy.wwzw + Temp[2].xxzx).yz;\n" +" Temp[2].xy = vec4(GlobalConstantBuffer_3.xyxx.yxyy * Temp[0].yzyy + GlobalConstantBuffer_4.xxxy.wzww).xy;\n" +" Temp[4].y = (textureLod(g_t0, Temp[0].zy, 0.000000).yxzw).y;\n" +" Temp[4].xz = vec4(Temp[2].xxyx * Temp[4].yyyy).xz;\n" +" Temp[2].xyz = vec4(-Temp[3].xyzx + Temp[4].xyzx).xyz;\n" +" Temp[0].y = vec4(dot((Temp[2].xyzx).xyz, (Temp[2].xyzx).xyz)).y;\n" +" Temp[4].z = vec4(0.000000).z;\n" +" Temp[4].x = vec4(-GlobalConstantBuffer_2.xxxy.w).x;\n" +" Temp[0].xz = vec4(Temp[0].xxwx * GlobalConstantBuffer_2.xxxy.wwzw + Temp[4].xxzx).xz;\n" +" Temp[4].xy = vec4(GlobalConstantBuffer_3.xyxx.yxyy * Temp[0].xzxx + GlobalConstantBuffer_4.xxxy.wzww).xy;\n" +" Temp[0].z = (textureLod(g_t0, Temp[0].zx, 0.000000).ywxz).z;\n" +" Temp[0].xw = vec4(Temp[0].zzzz * Temp[4].xxxy).xw;\n" +" Temp[0].xzw = vec4(-Temp[0].xxzw + Temp[3].xxyz).xzw;\n" +" Temp[1].w = vec4(dot((Temp[0].xzwx).xyz, (Temp[0].xzwx).xyz)).w;\n" +" Temp_uint[0].y = ((Temp[0].y)< (Temp[1].w)) ? 0xFFFFFFFFu : 0u;\n" +" if(vec4(Temp_uint[0].yyyy).x != 0.0) {\n" +" Temp[0].xyz = vec4(Temp[2].xyzx).xyz;\n" +" } else {\n" +" Temp[0].xyz = vec4(Temp[0].xzwx).xyz;\n" +" }\n" +" Temp[2].xyz = vec4(Temp[0].xyzx * Temp[1].xyzx).xyz;\n" +" Temp[0].xyz = vec4(Temp[1].zxyz * Temp[0].yzxy + -Temp[2].xyzx).xyz;\n" +" Temp[0].w = vec4(dot((Temp[0].xyzx).xyz, (Temp[0].xyzx).xyz)).w;\n" +" Temp[0].w = vec4(inversesqrt(Temp[0].w)).w;\n" +" Temp[0].xyz = vec4(Temp[0].wwww * Temp[0].xyzx).xyz;\n" +" Temp_uint[1].xy = uvec2(equal(ivec4(GlobalConstantBuffer_26).xy, ivec4(ivec4(1, 2, 0, 0)).xy)) * 0xFFFFFFFFu;\n" +" if(vec4(Temp_uint[1].yyyy).x != 0.0) {\n" +" Temp[1].yzw = vec4(-Temp[0].zzzz).xyz;\n" +" } else {\n" +" Temp[1].yzw = vec4(-Temp[0].xxyz).xyz;\n" +" }\n" +" if(vec4(Temp_uint[1].xxxx).x != 0.0) {\n" +" Temp[0].yzw = vec4(-Temp[0].yyyy).xyz;\n" +" } else {\n" +" Temp[0].yzw = vec4(Temp[1].yyzw).xyz;\n" +" }\n" +" if(vec4(GlobalConstantBuffer_26).x != 0.0) {\n" +" Output0.xyz = vec4(Temp[0].yzwy).xyz;\n" +" } else {\n" +" Output0.xyz = vec4(-Temp[0].xxxx).xyz;\n" +" }\n" +" Output0.w = vec4(0.000000).w;\n" +" return;\n" +"}\n" +; +static const char* g_DebugNormals_PS_FETCH_GBUFFER_NORMAL_1_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"uniform sampler2D g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[2];\n" +"ivec4 Temp_int[2];\n" +"uvec4 Temp_uint[2];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp_int[0].xy = ivec4(Input0.xyxx).xy;\n" +" Temp[0].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[0].xyz = texelFetch(g_t1, ivec2((Temp_int[0]).xy), 0).xyz;\n" +" Temp[0].xyz = vec4(Temp[0].xyzx * GlobalConstantBuffer_28 + GlobalConstantBuffer_29).xyz;\n" +" Temp[1].xyz = vec4(Temp[0].yyyy * GlobalConstantBuffer_27[1].xyzx).xyz;\n" +" Temp[0].xyw = vec4(Temp[0].xxxx * GlobalConstantBuffer_27[0].xyxz + Temp[1].xyxz).xyw;\n" +" Temp[0].xyz = vec4(Temp[0].zzzz * GlobalConstantBuffer_27[2].xyzx + Temp[0].xywx).xyz;\n" +" Temp[0].w = vec4(dot((Temp[0].xyzx).xyz, (Temp[0].xyzx).xyz)).w;\n" +" Temp[0].w = vec4(inversesqrt(Temp[0].w)).w;\n" +" Temp[0].xyz = vec4(Temp[0].wwww * Temp[0].xyzx).xyz;\n" +" Temp_uint[1].xy = uvec2(equal(ivec4(GlobalConstantBuffer_26).xy, ivec4(ivec4(1, 2, 0, 0)).xy)) * 0xFFFFFFFFu;\n" +" if(vec4(Temp_uint[1].yyyy).x != 0.0) {\n" +" Temp[1].yzw = vec4(-Temp[0].zzzz).xyz;\n" +" } else {\n" +" Temp[1].yzw = vec4(-Temp[0].xxyz).xyz;\n" +" }\n" +" if(vec4(Temp_uint[1].xxxx).x != 0.0) {\n" +" Temp[0].yzw = vec4(-Temp[0].yyyy).xyz;\n" +" } else {\n" +" Temp[0].yzw = vec4(Temp[1].yyzw).xyz;\n" +" }\n" +" if(vec4(GlobalConstantBuffer_26).x != 0.0) {\n" +" Output0.xyz = vec4(Temp[0].yzwy).xyz;\n" +" } else {\n" +" Output0.xyz = vec4(-Temp[0].xxxx).xyz;\n" +" }\n" +" Output0.w = vec4(0.000000).w;\n" +" return;\n" +"}\n" +; +static const char* g_DebugNormals_PS_FETCH_GBUFFER_NORMAL_2_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"uniform sampler2DMS g_t1;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[2];\n" +"ivec4 Temp_int[2];\n" +"uvec4 Temp_uint[2];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp_int[0].xy = ivec4(Input0.xyxx).xy;\n" +" Temp[0].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[0].xyz = texelFetch(g_t1, ivec2((Temp_int[0]).xy), 0).xyz;\n" +" Temp[0].xyz = vec4(Temp[0].xyzx * GlobalConstantBuffer_28 + GlobalConstantBuffer_29).xyz;\n" +" Temp[1].xyz = vec4(Temp[0].yyyy * GlobalConstantBuffer_27[1].xyzx).xyz;\n" +" Temp[0].xyw = vec4(Temp[0].xxxx * GlobalConstantBuffer_27[0].xyxz + Temp[1].xyxz).xyw;\n" +" Temp[0].xyz = vec4(Temp[0].zzzz * GlobalConstantBuffer_27[2].xyzx + Temp[0].xywx).xyz;\n" +" Temp[0].w = vec4(dot((Temp[0].xyzx).xyz, (Temp[0].xyzx).xyz)).w;\n" +" Temp[0].w = vec4(inversesqrt(Temp[0].w)).w;\n" +" Temp[0].xyz = vec4(Temp[0].wwww * Temp[0].xyzx).xyz;\n" +" Temp_uint[1].xy = uvec2(equal(ivec4(GlobalConstantBuffer_26).xy, ivec4(ivec4(1, 2, 0, 0)).xy)) * 0xFFFFFFFFu;\n" +" if(vec4(Temp_uint[1].yyyy).x != 0.0) {\n" +" Temp[1].yzw = vec4(-Temp[0].zzzz).xyz;\n" +" } else {\n" +" Temp[1].yzw = vec4(-Temp[0].xxyz).xyz;\n" +" }\n" +" if(vec4(Temp_uint[1].xxxx).x != 0.0) {\n" +" Temp[0].yzw = vec4(-Temp[0].yyyy).xyz;\n" +" } else {\n" +" Temp[0].yzw = vec4(Temp[1].yyzw).xyz;\n" +" }\n" +" if(vec4(GlobalConstantBuffer_26).x != 0.0) {\n" +" Output0.xyz = vec4(Temp[0].yzwy).xyz;\n" +" } else {\n" +" Output0.xyz = vec4(-Temp[0].xxxx).xyz;\n" +" }\n" +" Output0.w = vec4(0.000000).w;\n" +" return;\n" +"}\n" +; + +namespace Generated +{ + void DebugNormals_PS::Create(DevicePointer Device) + { + m_Shader[ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Create(Device, g_DebugNormals_PS_FETCH_GBUFFER_NORMAL_0_GL, sizeof(g_DebugNormals_PS_FETCH_GBUFFER_NORMAL_0_GL)); + m_Shader[ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Create(Device, g_DebugNormals_PS_FETCH_GBUFFER_NORMAL_1_GL, sizeof(g_DebugNormals_PS_FETCH_GBUFFER_NORMAL_1_GL)); + m_Shader[ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Create(Device, g_DebugNormals_PS_FETCH_GBUFFER_NORMAL_2_GL, sizeof(g_DebugNormals_PS_FETCH_GBUFFER_NORMAL_2_GL)); + } + + void DebugNormals_PS::Release(DevicePointer Device) + { + m_Shader[ShaderPermutations::FETCH_GBUFFER_NORMAL_0].Release(Device); + m_Shader[ShaderPermutations::FETCH_GBUFFER_NORMAL_1].Release(Device); + m_Shader[ShaderPermutations::FETCH_GBUFFER_NORMAL_2].Release(Device); + } +} diff --git a/src/shaders/out/gl/DebugNormals_PS.h b/src/shaders/out/gl/DebugNormals_PS.h new file mode 100644 index 0000000..ad529f2 --- /dev/null +++ b/src/shaders/out/gl/DebugNormals_PS.h @@ -0,0 +1,39 @@ +//! This file was auto-generated. Do not modify manually. +#pragma once + +namespace Generated +{ + +namespace ShaderPermutations +{ + +#ifndef FETCH_GBUFFER_NORMAL_DEFINED +#define FETCH_GBUFFER_NORMAL_DEFINED + enum FETCH_GBUFFER_NORMAL + { + FETCH_GBUFFER_NORMAL_0, + FETCH_GBUFFER_NORMAL_1, + FETCH_GBUFFER_NORMAL_2, + FETCH_GBUFFER_NORMAL_COUNT, + }; +#endif + +}; + +struct DebugNormals_PS +{ + void Create(DevicePointer Device); + void Release(DevicePointer Device); + GLSLPrograms::DebugNormals_PS& Get(ShaderPermutations::FETCH_GBUFFER_NORMAL A) + { + return m_Shader[A]; + } + +private: + GLSLPrograms::DebugNormals_PS m_Shader[ShaderPermutations::FETCH_GBUFFER_NORMAL_COUNT]; +#if _WIN32 + static_assert(ShaderPermutations::FETCH_GBUFFER_NORMAL_COUNT == 3, ""); +#endif +}; + +}; diff --git a/src/shaders/out/gl/DeinterleaveDepth_PS.cpp b/src/shaders/out/gl/DeinterleaveDepth_PS.cpp new file mode 100644 index 0000000..13aa843 --- /dev/null +++ b/src/shaders/out/gl/DeinterleaveDepth_PS.cpp @@ -0,0 +1,112 @@ +static const char* g_DeinterleaveDepth_PS_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"struct PerPassConstantBuffer_0_Type {\n" +" vec4 f4Jitter;\n" +" vec2 f2Offset;\n" +" float fSliceIndex;\n" +" uint uSliceIndex;\n" +"};\n" +"uniform PerPassConstantBuffer {\n" +" PerPassConstantBuffer_0_Type PerPassConstantBuffer_0;\n" +"};\n" +"uniform sampler2D g_t0;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"out vec4 PixOutput1;\n" +"#define Output1 PixOutput1\n" +"out vec4 PixOutput2;\n" +"#define Output2 PixOutput2\n" +"out vec4 PixOutput3;\n" +"#define Output3 PixOutput3\n" +"out vec4 PixOutput4;\n" +"#define Output4 PixOutput4\n" +"out vec4 PixOutput5;\n" +"#define Output5 PixOutput5\n" +"out vec4 PixOutput6;\n" +"#define Output6 PixOutput6\n" +"out vec4 PixOutput7;\n" +"#define Output7 PixOutput7\n" +"vec4 Temp[1];\n" +"ivec4 Temp_int[1];\n" +"uvec4 Temp_uint[1];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(floor(Input0.xyxx)).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(4.000000, 4.000000, 0.000000, 0.000000) + PerPassConstantBuffer_0.f2Offset.xyxx.xyxx).xy;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * GlobalConstantBuffer_2.xxxy.zwzz).xy;\n" +" Temp[0].z = (texture(g_t0, Temp[0].xy).yzxw).z;\n" +" Output0.x = vec4(Temp[0].z).x;\n" +" Temp[0].z = (textureOffset(g_t0, Temp[0].xy, ivec2(1, 0)).yzxw).z;\n" +" Output1.x = vec4(Temp[0].z).x;\n" +" Temp[0].z = (textureOffset(g_t0, Temp[0].xy, ivec2(2, 0)).yzxw).z;\n" +" Output2.x = vec4(Temp[0].z).x;\n" +" Temp[0].z = (textureOffset(g_t0, Temp[0].xy, ivec2(3, 0)).yzxw).z;\n" +" Output3.x = vec4(Temp[0].z).x;\n" +" Temp[0].z = (textureOffset(g_t0, Temp[0].xy, ivec2(0, 1)).yzxw).z;\n" +" Output4.x = vec4(Temp[0].z).x;\n" +" Temp[0].z = (textureOffset(g_t0, Temp[0].xy, ivec2(1, 1)).yzxw).z;\n" +" Output5.x = vec4(Temp[0].z).x;\n" +" Temp[0].z = (textureOffset(g_t0, Temp[0].xy, ivec2(2, 1)).yzxw).z;\n" +" Temp[0].x = (textureOffset(g_t0, Temp[0].xy, ivec2(3, 1))).x;\n" +" Output7.x = vec4(Temp[0].x).x;\n" +" Output6.x = vec4(Temp[0].z).x;\n" +" return;\n" +"}\n" +; + +namespace Generated +{ + void DeinterleaveDepth_PS::Create(DevicePointer Device) + { + m_Shader.Create(Device, g_DeinterleaveDepth_PS_GL, sizeof(g_DeinterleaveDepth_PS_GL)); + } + + void DeinterleaveDepth_PS::Release(DevicePointer Device) + { + m_Shader.Release(Device); + } +} diff --git a/src/shaders/out/gl/DeinterleaveDepth_PS.h b/src/shaders/out/gl/DeinterleaveDepth_PS.h new file mode 100644 index 0000000..d4d0c07 --- /dev/null +++ b/src/shaders/out/gl/DeinterleaveDepth_PS.h @@ -0,0 +1,27 @@ +//! This file was auto-generated. Do not modify manually. +#pragma once + +namespace Generated +{ + +namespace ShaderPermutations +{ + +}; + +struct DeinterleaveDepth_PS +{ + void Create(DevicePointer Device); + void Release(DevicePointer Device); + GLSLPrograms::DeinterleaveDepth_PS& Get() + { + return m_Shader; + } + +private: + GLSLPrograms::DeinterleaveDepth_PS m_Shader; +#if _WIN32 +#endif +}; + +}; diff --git a/src/shaders/out/gl/LinearizeDepth_PS.cpp b/src/shaders/out/gl/LinearizeDepth_PS.cpp new file mode 100644 index 0000000..13b0522 --- /dev/null +++ b/src/shaders/out/gl/LinearizeDepth_PS.cpp @@ -0,0 +1,145 @@ +static const char* g_LinearizeDepth_PS_RESOLVE_DEPTH_0_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"uniform sampler2D g_t0;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[1];\n" +"ivec4 Temp_int[1];\n" +"uvec4 Temp_uint[1];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(Input0.xyxx + GlobalConstantBuffer_21.xyxx.xyxx).xy;\n" +" Temp_int[0].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[0].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[0].x = texelFetch(g_t0, ivec2((Temp_int[0]).xy), 0).x;\n" +" Temp[0].x = GlobalConstantBuffer_19 * Temp[0].x + GlobalConstantBuffer_20;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_17 + GlobalConstantBuffer_18;\n" +" Output0.x = vec4(vec4(1.000000, 1.000000, 1.000000, 1.000000) / Temp[0].x).x;\n" +" return;\n" +"}\n" +; +static const char* g_LinearizeDepth_PS_RESOLVE_DEPTH_1_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"uniform sampler2DMS g_t0;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[1];\n" +"ivec4 Temp_int[1];\n" +"uvec4 Temp_uint[1];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(Input0.xyxx + GlobalConstantBuffer_21.xyxx.xyxx).xy;\n" +" Temp_int[0].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[0].zw = vec4(vec4(0.000000, 0.000000, 0.000000, 0.000000)).zw;\n" +" Temp[0].x = texelFetch(g_t0, ivec2((Temp_int[0]).xy), 0).x;\n" +" Temp[0].x = GlobalConstantBuffer_19 * Temp[0].x + GlobalConstantBuffer_20;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_17 + GlobalConstantBuffer_18;\n" +" Output0.x = vec4(vec4(1.000000, 1.000000, 1.000000, 1.000000) / Temp[0].x).x;\n" +" return;\n" +"}\n" +; + +namespace Generated +{ + void LinearizeDepth_PS::Create(DevicePointer Device) + { + m_Shader[ShaderPermutations::RESOLVE_DEPTH_0].Create(Device, g_LinearizeDepth_PS_RESOLVE_DEPTH_0_GL, sizeof(g_LinearizeDepth_PS_RESOLVE_DEPTH_0_GL)); + m_Shader[ShaderPermutations::RESOLVE_DEPTH_1].Create(Device, g_LinearizeDepth_PS_RESOLVE_DEPTH_1_GL, sizeof(g_LinearizeDepth_PS_RESOLVE_DEPTH_1_GL)); + } + + void LinearizeDepth_PS::Release(DevicePointer Device) + { + m_Shader[ShaderPermutations::RESOLVE_DEPTH_0].Release(Device); + m_Shader[ShaderPermutations::RESOLVE_DEPTH_1].Release(Device); + } +} diff --git a/src/shaders/out/gl/LinearizeDepth_PS.h b/src/shaders/out/gl/LinearizeDepth_PS.h new file mode 100644 index 0000000..7f2d16a --- /dev/null +++ b/src/shaders/out/gl/LinearizeDepth_PS.h @@ -0,0 +1,38 @@ +//! This file was auto-generated. Do not modify manually. +#pragma once + +namespace Generated +{ + +namespace ShaderPermutations +{ + +#ifndef RESOLVE_DEPTH_DEFINED +#define RESOLVE_DEPTH_DEFINED + enum RESOLVE_DEPTH + { + RESOLVE_DEPTH_0, + RESOLVE_DEPTH_1, + RESOLVE_DEPTH_COUNT, + }; +#endif + +}; + +struct LinearizeDepth_PS +{ + void Create(DevicePointer Device); + void Release(DevicePointer Device); + GLSLPrograms::LinearizeDepth_PS& Get(ShaderPermutations::RESOLVE_DEPTH A) + { + return m_Shader[A]; + } + +private: + GLSLPrograms::LinearizeDepth_PS m_Shader[ShaderPermutations::RESOLVE_DEPTH_COUNT]; +#if _WIN32 + static_assert(ShaderPermutations::RESOLVE_DEPTH_COUNT == 2, ""); +#endif +}; + +}; diff --git a/src/shaders/out/gl/ReconstructNormal_PS.cpp b/src/shaders/out/gl/ReconstructNormal_PS.cpp new file mode 100644 index 0000000..4281d4e --- /dev/null +++ b/src/shaders/out/gl/ReconstructNormal_PS.cpp @@ -0,0 +1,125 @@ +static const char* g_ReconstructNormal_PS_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"uniform sampler2D g_t0;\n" +" in vec4 VtxGeoOutput1;\n" +"vec4 Input1;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[5];\n" +"ivec4 Temp_int[5];\n" +"uvec4 Temp_uint[5];\n" +"void main()\n" +"{\n" +" Input1 = VtxGeoOutput1;\n" +" Temp[0].y = vec4(GlobalConstantBuffer_2.xxxy.z).y;\n" +" Temp[0].z = vec4(0.000000).z;\n" +" Temp[0].xy = vec4(Temp[0].yzyy + Input1.xyxx).xy;\n" +" Temp[0].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[0].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[1].x = (textureLod(g_t0, Temp[0].xy, 0.000000)).x;\n" +" Temp[1].yz = vec4(Temp[0].zzwz * Temp[1].xxxx).yz;\n" +" Temp[0].xy = vec4(GlobalConstantBuffer_3.xyxx.yxyy * Input1.yxyy + GlobalConstantBuffer_4.xxxy.wzww).xy;\n" +" Temp[2].y = (textureLod(g_t0, Input1.xy, 0.000000).yxzw).y;\n" +" Temp[2].xz = vec4(Temp[0].xxyx * Temp[2].yyyy).xz;\n" +" Temp[0].xyz = vec4(Temp[1].xyzx + -Temp[2].yzxy).xyz;\n" +" Temp[0].w = vec4(dot((Temp[0].xyzx).xyz, (Temp[0].xyzx).xyz)).w;\n" +" Temp[1].y = vec4(-GlobalConstantBuffer_2.xxxy.z).y;\n" +" Temp[1].z = vec4(0.000000).z;\n" +" Temp[1].xy = vec4(Temp[1].yzyy + Input1.xyxx).xy;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.xxxy * Temp[1].xxxy + GlobalConstantBuffer_4.xxxy.zzzw).zw;\n" +" Temp[3].x = (textureLod(g_t0, Temp[1].xy, 0.000000)).x;\n" +" Temp[3].yz = vec4(Temp[1].zzwz * Temp[3].xxxx).yz;\n" +" Temp[1].xyz = vec4(Temp[2].yzxy + -Temp[3].xyzx).xyz;\n" +" Temp[1].w = vec4(dot((Temp[1].xyzx).xyz, (Temp[1].xyzx).xyz)).w;\n" +" Temp_uint[0].w = ((Temp[0].w)< (Temp[1].w)) ? 0xFFFFFFFFu : 0u;\n" +" if(vec4(Temp_uint[0].wwww).x != 0.0) {\n" +" Temp[0].xyz = vec4(Temp[0].xyzx).xyz;\n" +" } else {\n" +" Temp[0].xyz = vec4(Temp[1].xyzx).xyz;\n" +" }\n" +" Temp[1].z = vec4(0.000000).z;\n" +" Temp[1].x = vec4(GlobalConstantBuffer_2.xxxy.w).x;\n" +" Temp[1].xy = vec4(Temp[1].xzxx + Input1.yxyy).xy;\n" +" Temp[1].zw = vec4(GlobalConstantBuffer_3.xyxx.yyyx * Temp[1].xxxy + GlobalConstantBuffer_4.xxxy.wwwz).zw;\n" +" Temp[3].y = (textureLod(g_t0, Temp[1].yx, 0.000000).yxzw).y;\n" +" Temp[3].xz = vec4(Temp[1].zzwz * Temp[3].yyyy).xz;\n" +" Temp[1].xyz = vec4(-Temp[2].xyzx + Temp[3].xyzx).xyz;\n" +" Temp[0].w = vec4(dot((Temp[1].xyzx).xyz, (Temp[1].xyzx).xyz)).w;\n" +" Temp[3].z = vec4(0.000000).z;\n" +" Temp[3].x = vec4(-GlobalConstantBuffer_2.xxxy.w).x;\n" +" Temp[3].xy = vec4(Temp[3].xzxx + Input1.yxyy).xy;\n" +" Temp[3].zw = vec4(GlobalConstantBuffer_3.xyxx.yyyx * Temp[3].xxxy + GlobalConstantBuffer_4.xxxy.wwwz).zw;\n" +" Temp[4].y = (textureLod(g_t0, Temp[3].yx, 0.000000).yxzw).y;\n" +" Temp[4].xz = vec4(Temp[3].zzwz * Temp[4].yyyy).xz;\n" +" Temp[2].xyz = vec4(Temp[2].xyzx + -Temp[4].xyzx).xyz;\n" +" Temp[1].w = vec4(dot((Temp[2].xyzx).xyz, (Temp[2].xyzx).xyz)).w;\n" +" Temp_uint[0].w = ((Temp[0].w)< (Temp[1].w)) ? 0xFFFFFFFFu : 0u;\n" +" if(vec4(Temp_uint[0].wwww).x != 0.0) {\n" +" Temp[1].xyz = vec4(Temp[1].xyzx).xyz;\n" +" } else {\n" +" Temp[1].xyz = vec4(Temp[2].xyzx).xyz;\n" +" }\n" +" Temp[2].xyz = vec4(Temp[0].xyzx * Temp[1].xyzx).xyz;\n" +" Temp[0].xyz = vec4(Temp[0].zxyz * Temp[1].yzxy + -Temp[2].xyzx).xyz;\n" +" Temp[0].w = vec4(dot((Temp[0].xyzx).xyz, (Temp[0].xyzx).xyz)).w;\n" +" Temp[0].w = vec4(inversesqrt(Temp[0].w)).w;\n" +" Temp[0].xyz = vec4(Temp[0].wwww * Temp[0].xyzx).xyz;\n" +" Output0.xyz = vec4(Temp[0].xyzx * vec4(0.500000, 0.500000, 0.500000, 0.000000) + vec4(0.500000, 0.500000, 0.500000, 0.000000)).xyz;\n" +" Output0.w = vec4(0.000000).w;\n" +" return;\n" +"}\n" +; + +namespace Generated +{ + void ReconstructNormal_PS::Create(DevicePointer Device) + { + m_Shader.Create(Device, g_ReconstructNormal_PS_GL, sizeof(g_ReconstructNormal_PS_GL)); + } + + void ReconstructNormal_PS::Release(DevicePointer Device) + { + m_Shader.Release(Device); + } +} diff --git a/src/shaders/out/gl/ReconstructNormal_PS.h b/src/shaders/out/gl/ReconstructNormal_PS.h new file mode 100644 index 0000000..8d6567f --- /dev/null +++ b/src/shaders/out/gl/ReconstructNormal_PS.h @@ -0,0 +1,27 @@ +//! This file was auto-generated. Do not modify manually. +#pragma once + +namespace Generated +{ + +namespace ShaderPermutations +{ + +}; + +struct ReconstructNormal_PS +{ + void Create(DevicePointer Device); + void Release(DevicePointer Device); + GLSLPrograms::ReconstructNormal_PS& Get() + { + return m_Shader; + } + +private: + GLSLPrograms::ReconstructNormal_PS m_Shader; +#if _WIN32 +#endif +}; + +}; diff --git a/src/shaders/out/gl/ReinterleaveAO_PS.cpp b/src/shaders/out/gl/ReinterleaveAO_PS.cpp new file mode 100644 index 0000000..4c295b1 --- /dev/null +++ b/src/shaders/out/gl/ReinterleaveAO_PS.cpp @@ -0,0 +1,128 @@ +static const char* g_ReinterleaveAO_PS_ENABLE_BLUR_0_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform GlobalConstantBuffer {\n" +" uvec4 GlobalConstantBuffer_0;\n" +" vec2 GlobalConstantBuffer_1;\n" +" vec2 GlobalConstantBuffer_2;\n" +" vec2 GlobalConstantBuffer_3;\n" +" vec2 GlobalConstantBuffer_4;\n" +" float GlobalConstantBuffer_5;\n" +" float GlobalConstantBuffer_6;\n" +" float GlobalConstantBuffer_7;\n" +" float GlobalConstantBuffer_8;\n" +" float GlobalConstantBuffer_9;\n" +" float GlobalConstantBuffer_10;\n" +" float GlobalConstantBuffer_11;\n" +" int GlobalConstantBuffer_12;\n" +" float GlobalConstantBuffer_13;\n" +" float GlobalConstantBuffer_14;\n" +" float GlobalConstantBuffer_15;\n" +" float GlobalConstantBuffer_16;\n" +" float GlobalConstantBuffer_17;\n" +" float GlobalConstantBuffer_18;\n" +" float GlobalConstantBuffer_19;\n" +" float GlobalConstantBuffer_20;\n" +" vec2 GlobalConstantBuffer_21;\n" +" float GlobalConstantBuffer_22;\n" +" float GlobalConstantBuffer_23;\n" +" float GlobalConstantBuffer_24;\n" +" float GlobalConstantBuffer_25;\n" +" int GlobalConstantBuffer_26;\n" +" vec4 GlobalConstantBuffer_27[4];\n" +" float GlobalConstantBuffer_28;\n" +" float GlobalConstantBuffer_29;\n" +"};\n" +"uniform sampler2DArray g_t0;\n" +"vec4 Input0;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[2];\n" +"ivec4 Temp_int[2];\n" +"uvec4 Temp_uint[2];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Temp[0].xy = vec4(Input0.xyxx + -GlobalConstantBuffer_21.xyxx.xyxx).xy;\n" +" Temp[0].xy = vec4(floor(Temp[0].xyxx)).xy;\n" +" Temp[0].zw = vec4(abs(Temp[0].yyyx) * vec4(0.000000, 0.000000, 0.250000, 0.250000)).zw;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(0.250000, 0.250000, 0.000000, 0.000000)).xy;\n" +" Temp_int[1].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[0].xy = vec4(fract(Temp[0].zwzz)).xy;\n" +" Temp[0].x = vec4(dot((Temp[0].xyxx).xy, (vec4(16.000000, 4.000000, 0.000000, 0.000000)).xy)).x;\n" +" Temp_int[1].z = int(Temp[0].x);\n" +" Temp[1].w = vec4(0.000000).w;\n" +" Temp[0].x = texelFetch(g_t0, ivec3((Temp_int[1]).xyz), 0).x;\n" +" Temp[0].x = vec4(Temp[0].x).x;\n" +" Temp[0].x = clamp(Temp[0].x, 0.0, 1.0);\n" +" Temp[0].x = vec4(log2(Temp[0].x)).x;\n" +" Temp[0].x = Temp[0].x * GlobalConstantBuffer_11;\n" +" Output0 = vec4(exp2(Temp[0].xxxx));\n" +" return;\n" +"}\n" +; +static const char* g_ReinterleaveAO_PS_ENABLE_BLUR_1_GL = +"#version 150\n" +"struct vec1 {\n" +" float x;\n" +"};\n" +"struct uvec1 {\n" +" uint x;\n" +"};\n" +"struct ivec1 {\n" +" int x;\n" +"};\n" +"layout(std140) uniform;\n" +"uniform sampler2DArray g_t0;\n" +"uniform sampler2D g_t1;\n" +"vec4 Input0;\n" +" in vec4 VtxGeoOutput1;\n" +"vec4 Input1;\n" +"out vec4 PixOutput0;\n" +"#define Output0 PixOutput0\n" +"vec4 Temp[2];\n" +"ivec4 Temp_int[2];\n" +"uvec4 Temp_uint[2];\n" +"void main()\n" +"{\n" +" Input0.xy = gl_FragCoord.xy;\n" +" Input1 = VtxGeoOutput1;\n" +" Temp[0].xy = vec4(floor(Input0.xyxx)).xy;\n" +" Temp[0].zw = vec4(abs(Temp[0].yyyx) * vec4(0.000000, 0.000000, 0.250000, 0.250000)).zw;\n" +" Temp[0].xy = vec4(Temp[0].xyxx * vec4(0.250000, 0.250000, 0.000000, 0.000000)).xy;\n" +" Temp_int[1].xy = ivec4(Temp[0].xyxx).xy;\n" +" Temp[0].xy = vec4(fract(Temp[0].zwzz)).xy;\n" +" Temp[0].x = vec4(dot((Temp[0].xyxx).xy, (vec4(16.000000, 4.000000, 0.000000, 0.000000)).xy)).x;\n" +" Temp_int[1].z = int(Temp[0].x);\n" +" Temp[1].w = vec4(0.000000).w;\n" +" Temp[0].x = texelFetch(g_t0, ivec3((Temp_int[1]).xyz), 0).x;\n" +" Output0.x = vec4(Temp[0].x).x;\n" +" Temp[0].x = (texture(g_t1, Input1.xy)).x;\n" +" Output0.y = vec4(Temp[0].x).y;\n" +" return;\n" +"}\n" +; + +namespace Generated +{ + void ReinterleaveAO_PS::Create(DevicePointer Device) + { + m_Shader[ShaderPermutations::ENABLE_BLUR_0].Create(Device, g_ReinterleaveAO_PS_ENABLE_BLUR_0_GL, sizeof(g_ReinterleaveAO_PS_ENABLE_BLUR_0_GL)); + m_Shader[ShaderPermutations::ENABLE_BLUR_1].Create(Device, g_ReinterleaveAO_PS_ENABLE_BLUR_1_GL, sizeof(g_ReinterleaveAO_PS_ENABLE_BLUR_1_GL)); + } + + void ReinterleaveAO_PS::Release(DevicePointer Device) + { + m_Shader[ShaderPermutations::ENABLE_BLUR_0].Release(Device); + m_Shader[ShaderPermutations::ENABLE_BLUR_1].Release(Device); + } +} diff --git a/src/shaders/out/gl/ReinterleaveAO_PS.h b/src/shaders/out/gl/ReinterleaveAO_PS.h new file mode 100644 index 0000000..af905a8 --- /dev/null +++ b/src/shaders/out/gl/ReinterleaveAO_PS.h @@ -0,0 +1,38 @@ +//! This file was auto-generated. Do not modify manually. +#pragma once + +namespace Generated +{ + +namespace ShaderPermutations +{ + +#ifndef ENABLE_BLUR_DEFINED +#define ENABLE_BLUR_DEFINED + enum ENABLE_BLUR + { + ENABLE_BLUR_0, + ENABLE_BLUR_1, + ENABLE_BLUR_COUNT, + }; +#endif + +}; + +struct ReinterleaveAO_PS +{ + void Create(DevicePointer Device); + void Release(DevicePointer Device); + GLSLPrograms::ReinterleaveAO_PS& Get(ShaderPermutations::ENABLE_BLUR A) + { + return m_Shader[A]; + } + +private: + GLSLPrograms::ReinterleaveAO_PS m_Shader[ShaderPermutations::ENABLE_BLUR_COUNT]; +#if _WIN32 + static_assert(ShaderPermutations::ENABLE_BLUR_COUNT == 2, ""); +#endif +}; + +}; diff --git a/src/shaders/src/BlurX_PS.hlsl b/src/shaders/src/BlurX_PS.hlsl new file mode 100644 index 0000000..7554711 --- /dev/null +++ b/src/shaders/src/BlurX_PS.hlsl @@ -0,0 +1,27 @@ +/* +#permutation ENABLE_SHARPNESS_PROFILE 0 1 +#permutation KERNEL_RADIUS 2 4 +*/ + +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "ConstantBuffers.hlsl" +#include "FullScreenTriangle_VS.hlsl" +#include "Blur_Common.hlsl" + +//---------------------------------------------------------------------------------- +float2 BlurX_PS( PostProc_VSOut IN ) : SV_TARGET +{ + float CenterDepth; + float AO = ComputeBlur(IN, float2(g_f2InvFullResolution.x,0), CenterDepth); + + return float2(AO, CenterDepth); +} diff --git a/src/shaders/src/BlurY_PS.hlsl b/src/shaders/src/BlurY_PS.hlsl new file mode 100644 index 0000000..77ec810 --- /dev/null +++ b/src/shaders/src/BlurY_PS.hlsl @@ -0,0 +1,29 @@ +/* +#permutation ENABLE_SHARPNESS_PROFILE 0 1 +#permutation KERNEL_RADIUS 2 4 +*/ + +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "ConstantBuffers.hlsl" +#include "FullScreenTriangle_VS.hlsl" +#include "Blur_Common.hlsl" + +//------------------------------------------------------------------------- +float4 BlurY_PS( PostProc_VSOut IN ) : SV_TARGET +{ + SubtractViewportOrigin(IN); + + float CenterDepth; + float AO = ComputeBlur(IN, float2(0,g_f2InvFullResolution.y), CenterDepth); + + return pow(saturate(AO), g_fPowExponent); +} diff --git a/src/shaders/src/Blur_Common.hlsl b/src/shaders/src/Blur_Common.hlsl new file mode 100644 index 0000000..184b994 --- /dev/null +++ b/src/shaders/src/Blur_Common.hlsl @@ -0,0 +1,206 @@ +// This code contains NVIDIA Confidential Information and is disclosed +// under the Mutual Non-Disclosure Agreement. +// +// Notice +// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES +// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO +// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT, +// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. +// +// NVIDIA Corporation assumes no responsibility for the consequences of use of such +// information or for any infringement of patents or other rights of third parties that may +// result from its use. No license is granted by implication or otherwise under any patent +// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless +// expressly authorized by NVIDIA. Details are subject to change without notice. +// This code supersedes and replaces all information previously supplied. +// NVIDIA Corporation products are not authorized for use as critical +// components in life support devices or systems without express written approval of +// NVIDIA Corporation. +// +// Copyright © 2008-2016 NVIDIA Corporation. All rights reserved. +// +// NVIDIA Corporation and its licensors retain all intellectual property and proprietary +// rights in and to this software and related documentation and any modifications thereto. +// Any use, reproduction, disclosure or distribution of this software and related +// documentation without an express license agreement from NVIDIA Corporation is +// strictly prohibited. +// + +Texture2D AODepthTexture : register(t0); +sampler PointClampSampler : register(s0); +sampler LinearClampSampler : register(s1); + +// Use step size = 1/2 in the inner/outer-half of the kernel +#define USE_ADAPTIVE_SAMPLING (KERNEL_RADIUS >= 4) + +// 10% gain on BlurX on GK104 +#define USE_MAD_OPT 1 + +// Offset the center depth along the tangent direction +#define USE_DEPTH_SLOPE 1 + +//---------------------------------------------------------------------------------- +#if API_GL +Texture2D g_t0; +Texture2D g_t1; +float2 PointSampleAODepth(float2 UV) +{ + return g_t0.Sample(PointClampSampler, UV).xy; +} +float2 LinearSampleAODepth(float2 UV) +{ + return g_t1.Sample(LinearClampSampler, UV).xy; +} +#else +float2 PointSampleAODepth(float2 UV) +{ + return AODepthTexture.Sample(PointClampSampler, UV).xy; +} +float2 LinearSampleAODepth(float2 UV) +{ + return AODepthTexture.Sample(LinearClampSampler, UV).xy; +} +#endif + +//---------------------------------------------------------------------------------- +struct CenterPixelData +{ + float2 UV; + float Depth; + float Sharpness; +#if USE_MAD_OPT + float Scale; + float Bias; +#endif +}; + +//---------------------------------------------------------------------------------- +float CrossBilateralWeight(float R, float SampleDepth, float DepthSlope, CenterPixelData Center) +{ + const float BlurSigma = ((float)KERNEL_RADIUS+1.0) * 0.5; + const float BlurFalloff = 1.0 / (2.0*BlurSigma*BlurSigma); + +#if USE_DEPTH_SLOPE + SampleDepth -= DepthSlope * R; +#endif + +#if USE_MAD_OPT + float DeltaZ = SampleDepth * Center.Scale + Center.Bias; +#else + float DeltaZ = (SampleDepth - Center.Depth) * Center.Sharpness; +#endif + + return exp2(-R*R*BlurFalloff - DeltaZ*DeltaZ); +} + +//------------------------------------------------------------------------- +void ProcessSample(float2 AOZ, + float R, + float DepthSlope, + CenterPixelData Center, + inout float TotalAO, + inout float TotalW) +{ + float AO = AOZ.x; + float Z = AOZ.y; + + float W = CrossBilateralWeight(R, Z, DepthSlope, Center); + TotalAO += W * AO; + TotalW += W; +} + +//------------------------------------------------------------------------- +void ProcessRadius(float R0, + float2 DeltaUV, + float DepthSlope, + CenterPixelData Center, + inout float TotalAO, + inout float TotalW) +{ +#if USE_ADAPTIVE_SAMPLING + float R = R0; + + [unroll] + for (; R <= KERNEL_RADIUS/2; R += 1) + { + float2 UV = R * DeltaUV + Center.UV; + float2 AOZ = PointSampleAODepth(UV); + ProcessSample(AOZ, R, DepthSlope, Center, TotalAO, TotalW); + } + + [unroll] + for (; R <= KERNEL_RADIUS; R += 2) + { + float2 UV = (R + 0.5) * DeltaUV + Center.UV; + float2 AOZ = LinearSampleAODepth(UV); + ProcessSample(AOZ, R, DepthSlope, Center, TotalAO, TotalW); + } +#else + [unroll] + for (float R = R0; R <= KERNEL_RADIUS; R += 1) + { + float2 UV = R * DeltaUV + Center.UV; + float2 AOZ = PointSampleAODepth(UV); + ProcessSample(AOZ, R, DepthSlope, Center, TotalAO, TotalW); + } +#endif +} + +//------------------------------------------------------------------------- +#if USE_DEPTH_SLOPE +void ProcessRadius1(float2 DeltaUV, + CenterPixelData Center, + inout float TotalAO, + inout float TotalW) +{ + float2 AODepth = PointSampleAODepth(Center.UV + DeltaUV); + float DepthSlope = AODepth.y - Center.Depth; + + ProcessSample(AODepth, 1, DepthSlope, Center, TotalAO, TotalW); + ProcessRadius(2, DeltaUV, DepthSlope, Center, TotalAO, TotalW); +} +#endif + +//------------------------------------------------------------------------- +float GetSharpness(float ViewDepth) +{ +#if ENABLE_SHARPNESS_PROFILE + float lerpFactor = (ViewDepth - g_fBlurViewDepth0) / (g_fBlurViewDepth1 - g_fBlurViewDepth0); + return lerp(g_fBlurSharpness0, g_fBlurSharpness1, saturate(lerpFactor)); +#else + return g_fBlurSharpness1; +#endif +} + +//------------------------------------------------------------------------- +float ComputeBlur(PostProc_VSOut IN, + float2 DeltaUV, + out float CenterDepth) +{ + float2 AOZ = PointSampleAODepth(IN.uv); + CenterDepth = AOZ.y; + + CenterPixelData Center; + Center.UV = IN.uv; + Center.Depth = CenterDepth; + Center.Sharpness = GetSharpness(CenterDepth); + +#if USE_MAD_OPT + Center.Scale = Center.Sharpness; + Center.Bias = -Center.Depth * Center.Sharpness; +#endif + + float TotalAO = AOZ.x; + float TotalW = 1.0; + +#if USE_DEPTH_SLOPE + ProcessRadius1(DeltaUV, Center, TotalAO, TotalW); + ProcessRadius1(-DeltaUV, Center, TotalAO, TotalW); +#else + float DepthSlope = 0; + ProcessRadius(1, DeltaUV, DepthSlope, Center, TotalAO, TotalW); + ProcessRadius(1, -DeltaUV, -DepthSlope, Center, TotalAO, TotalW); +#endif + + return TotalAO / TotalW; +} diff --git a/src/shaders/src/CoarseAO_GS.hlsl b/src/shaders/src/CoarseAO_GS.hlsl new file mode 100644 index 0000000..ea898fc --- /dev/null +++ b/src/shaders/src/CoarseAO_GS.hlsl @@ -0,0 +1,35 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "ConstantBuffers.hlsl" +#include "FullScreenTriangle_VS.hlsl" + +struct GSOut +{ + float4 pos : SV_Position; + float2 uv : TEXCOORD0; + uint LayerIndex : SV_RenderTargetArrayIndex; +}; + +[maxvertexcount(3)] +void CoarseAO_GS(triangle PostProc_VSOut input[3], inout TriangleStream OUT) +{ + GSOut OutVertex; + + OutVertex.LayerIndex = g_PerPassConstants.uSliceIndex; + + [unroll] + for (int VertexID = 0; VertexID < 3; VertexID++) + { + OutVertex.uv = input[VertexID].uv; + OutVertex.pos = input[VertexID].pos; + OUT.Append(OutVertex); + } +} diff --git a/src/shaders/src/CoarseAO_PS.hlsl b/src/shaders/src/CoarseAO_PS.hlsl new file mode 100644 index 0000000..b15736a --- /dev/null +++ b/src/shaders/src/CoarseAO_PS.hlsl @@ -0,0 +1,217 @@ +/* +#permutation ENABLE_FOREGROUND_AO 0 1 +#permutation ENABLE_BACKGROUND_AO 0 1 +#permutation ENABLE_DEPTH_THRESHOLD 0 1 +#permutation FETCH_GBUFFER_NORMAL 0 1 2 +*/ + +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "FullScreenTriangle_VS.hlsl" + +#if FETCH_GBUFFER_NORMAL +#include "FetchNormal_Common.hlsl" +#endif + +#if API_GL +#define QuarterResDepthTexture g_t0 +#define ReconstructedNormalTexture g_t1 +#endif + +Texture2DArray QuarterResDepthTexture : register(t0); + +#if !FETCH_GBUFFER_NORMAL +Texture2D ReconstructedNormalTexture : register(t1); +#endif + +sampler PointClampSampler : register(s0); + +//---------------------------------------------------------------------------------- +float3 UVToView(float2 UV, float ViewDepth) +{ + UV = g_f2UVToViewA * UV + g_f2UVToViewB; + return float3(UV * ViewDepth, ViewDepth); +} + +//---------------------------------------------------------------------------------- +float3 FetchFullResViewNormal(PostProc_VSOut IN) +{ +#if !FETCH_GBUFFER_NORMAL + return ReconstructedNormalTexture.Load(int3(IN.pos.xy,0)) * 2.0 - 1.0; +#else + return FetchFullResViewNormal_GBuffer(IN); +#endif +} + +//---------------------------------------------------------------------------------- +float3 FetchQuarterResViewPos(float2 UV) +{ +#if API_GL + float fSliceIndex = g_PerPassConstants.fSliceIndex; +#else + float fSliceIndex = 0; +#endif + float ViewDepth = QuarterResDepthTexture.SampleLevel(PointClampSampler, float3(UV,fSliceIndex), 0); + return UVToView(UV, ViewDepth); +} + +//---------------------------------------------------------------------------------- +float2 RotateDirection(float2 Dir, float2 CosSin) +{ + return float2(Dir.x*CosSin.x - Dir.y*CosSin.y, + Dir.x*CosSin.y + Dir.y*CosSin.x); +} + +//---------------------------------------------------------------------------------- +float DepthThresholdFactor(float ViewDepth) +{ + return saturate((ViewDepth * g_fViewDepthThresholdNegInv + 1.0) * g_fViewDepthThresholdSharpness); +} + +//---------------------------------------------------------------------------------- +struct AORadiusParams +{ + float fRadiusPixels; + float fNegInvR2; +}; + +//---------------------------------------------------------------------------------- +void ScaleAORadius(inout AORadiusParams Params, float ScaleFactor) +{ + Params.fRadiusPixels *= ScaleFactor; + Params.fNegInvR2 *= 1.0 / (ScaleFactor * ScaleFactor); +} + +//---------------------------------------------------------------------------------- +AORadiusParams GetAORadiusParams(float ViewDepth) +{ + AORadiusParams Params; + Params.fRadiusPixels = g_fRadiusToScreen / ViewDepth; + Params.fNegInvR2 = g_fNegInvR2; + +#if ENABLE_BACKGROUND_AO + ScaleAORadius(Params, max(1.0, g_fBackgroundAORadiusPixels / Params.fRadiusPixels)); +#endif + +#if ENABLE_FOREGROUND_AO + ScaleAORadius(Params, min(1.0, g_fForegroundAORadiusPixels / Params.fRadiusPixels)); +#endif + + return Params; +} + +//---------------------------------------------------------------------------------- +float Falloff(float DistanceSquare, AORadiusParams Params) +{ + // 1 scalar mad instruction + return DistanceSquare * Params.fNegInvR2 + 1.0; +} + +//---------------------------------------------------------------------------------- +// P = view-space position at the kernel center +// N = view-space normal at the kernel center +// S = view-space position of the current sample +//---------------------------------------------------------------------------------- +float ComputeAO(float3 P, float3 N, float3 S, AORadiusParams Params) +{ + float3 V = S - P; + float VdotV = dot(V, V); + float NdotV = dot(N, V) * rsqrt(VdotV); + + // Use saturate(x) instead of max(x,0.f) because that is faster + return saturate(NdotV - g_fNDotVBias) * saturate(Falloff(VdotV, Params)); +} + +//---------------------------------------------------------------------------------- +float ComputeCoarseAO(float2 FullResUV, float3 ViewPosition, float3 ViewNormal, AORadiusParams Params) +{ + // Divide by NUM_STEPS+1 so that the farthest samples are not fully attenuated + float StepSizePixels = (Params.fRadiusPixels / 4.0) / (NUM_STEPS + 1); + +#if USE_RANDOM_TEXTURE + float4 Rand = g_PerPassConstants.f4Jitter; +#else + float4 Rand = float4(1,0,1,1); +#endif + + const float Alpha = 2.0 * GFSDK_PI / NUM_DIRECTIONS; + float NearAO = 0; + float FarAO = 0; + + [unroll] + for (float DirectionIndex = 0; DirectionIndex < NUM_DIRECTIONS; ++DirectionIndex) + { + float Angle = Alpha * DirectionIndex; + + // Compute normalized 2D direction + float2 Direction = RotateDirection(float2(cos(Angle), sin(Angle)), Rand.xy); + +#if API_GL + // To match the reference D3D11 implementation + Direction.y = -Direction.y; +#endif + + // Jitter starting sample within the first step + float RayPixels = (Rand.z * StepSizePixels + 1.0); + + { + float2 SnappedUV = round(RayPixels * Direction) * g_f2InvQuarterResolution + FullResUV; + float3 S = FetchQuarterResViewPos(SnappedUV); + RayPixels += StepSizePixels; + + NearAO += ComputeAO(ViewPosition, ViewNormal, S, Params); + } + + [unroll] + for (float StepIndex = 1; StepIndex < NUM_STEPS; ++StepIndex) + { + float2 SnappedUV = round(RayPixels * Direction) * g_f2InvQuarterResolution + FullResUV; + float3 S = FetchQuarterResViewPos(SnappedUV); + RayPixels += StepSizePixels; + + FarAO += ComputeAO(ViewPosition, ViewNormal, S, Params); + } + } + + float AO = (NearAO * g_fNearAOAmount) + (FarAO * g_fFarAOAmount); + + AO /= (NUM_DIRECTIONS * NUM_STEPS); + + return AO; +} + +//---------------------------------------------------------------------------------- +float CoarseAO_PS(PostProc_VSOut IN) : SV_TARGET +{ + IN.pos.xy = floor(IN.pos.xy) * 4.0 + g_PerPassConstants.f2Offset; + IN.uv = IN.pos.xy * (g_f2InvQuarterResolution / 4.0); + + // Batch 2 texture fetches before the branch + float3 ViewPosition = FetchQuarterResViewPos(IN.uv); + float3 ViewNormal = FetchFullResViewNormal(IN); + + AORadiusParams Params = GetAORadiusParams(ViewPosition.z); + + // Early exit if the projected radius is smaller than 1 full-res pixel + [branch] + if (Params.fRadiusPixels < 1.0) + { + return 1.0; + } + + float AO = ComputeCoarseAO(IN.uv, ViewPosition, ViewNormal, Params); + +#if ENABLE_DEPTH_THRESHOLD + AO *= DepthThresholdFactor(ViewPosition.z); +#endif + + return saturate(1.0 - AO * 2.0); +} diff --git a/src/shaders/src/ConstantBuffers.hlsl b/src/shaders/src/ConstantBuffers.hlsl new file mode 100644 index 0000000..79b2575 --- /dev/null +++ b/src/shaders/src/ConstantBuffers.hlsl @@ -0,0 +1,131 @@ +// This code contains NVIDIA Confidential Information and is disclosed +// under the Mutual Non-Disclosure Agreement. +// +// Notice +// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES +// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO +// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT, +// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. +// +// NVIDIA Corporation assumes no responsibility for the consequences of use of such +// information or for any infringement of patents or other rights of third parties that may +// result from its use. No license is granted by implication or otherwise under any patent +// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless +// expressly authorized by NVIDIA. Details are subject to change without notice. +// This code supersedes and replaces all information previously supplied. +// NVIDIA Corporation products are not authorized for use as critical +// components in life support devices or systems without express written approval of +// NVIDIA Corporation. +// +// Copyright © 2008-2016 NVIDIA Corporation. All rights reserved. +// +// NVIDIA Corporation and its licensors retain all intellectual property and proprietary +// rights in and to this software and related documentation and any modifications thereto. +// Any use, reproduction, disclosure or distribution of this software and related +// documentation without an express license agreement from NVIDIA Corporation is +// strictly prohibited. +// + +#ifndef CONSTANT_BUFFERS_H +#define CONSTANT_BUFFERS_H + +#include "SharedDefines.h" + +#ifdef __cplusplus + +#define CBUFFER struct +#define REGISTER(SLOT) +#define DECLARE_CONSTANT(TYPE, VARIABLE) TYPE VARIABLE +#define PAD_FLOAT float g_fPad +#define PAD_FLOAT2 float2 g_f2Pad +#define PAD_FLOAT3 float3 g_f3Pad + +namespace GFSDK { +namespace SSAO { + +#else // __cplusplus + +#define CBUFFER cbuffer +#define REGISTER(SLOT) : register(##SLOT##) +#define DECLARE_CONSTANT(TYPE, VARIABLE) TYPE g_##VARIABLE +#define PAD_FLOAT +#define PAD_FLOAT2 +#define PAD_FLOAT3 +#pragma pack_matrix( row_major ) + +#endif // __cplusplus + +// +// Note: The constant buffer sizes must be a multiple of 16 bytes (d3d11 requirement). +// + +CBUFFER GlobalConstantBuffer REGISTER(b0) +{ + DECLARE_CONSTANT(uint4, u4BuildVersion); + + DECLARE_CONSTANT(float2, f2InvQuarterResolution); + DECLARE_CONSTANT(float2, f2InvFullResolution); + + DECLARE_CONSTANT(float2, f2UVToViewA); + DECLARE_CONSTANT(float2, f2UVToViewB); + + DECLARE_CONSTANT(float, fRadiusToScreen); + DECLARE_CONSTANT(float, fR2); + DECLARE_CONSTANT(float, fNegInvR2); + DECLARE_CONSTANT(float, fNDotVBias); + + DECLARE_CONSTANT(float, fNearAOAmount); + DECLARE_CONSTANT(float, fFarAOAmount); + DECLARE_CONSTANT(float, fPowExponent); + DECLARE_CONSTANT(int, iTrue); + + DECLARE_CONSTANT(float, fBlurViewDepth0); + DECLARE_CONSTANT(float, fBlurViewDepth1); + DECLARE_CONSTANT(float, fBlurSharpness0); + DECLARE_CONSTANT(float, fBlurSharpness1); + + DECLARE_CONSTANT(float, fLinearizeDepthA); + DECLARE_CONSTANT(float, fLinearizeDepthB); + DECLARE_CONSTANT(float, fInverseDepthRangeA); + DECLARE_CONSTANT(float, fInverseDepthRangeB); + + DECLARE_CONSTANT(float2, f2InputViewportTopLeft); + DECLARE_CONSTANT(float, fViewDepthThresholdNegInv); + DECLARE_CONSTANT(float, fViewDepthThresholdSharpness); + + DECLARE_CONSTANT(float, fBackgroundAORadiusPixels); + DECLARE_CONSTANT(float, fForegroundAORadiusPixels); + DECLARE_CONSTANT(int, iDebugNormalComponent); + PAD_FLOAT; + + // HLSLcc has a bug with float3x4 so use float4x4 instead + DECLARE_CONSTANT(float4x4, f44NormalMatrix); + DECLARE_CONSTANT(float, fNormalDecodeScale); + DECLARE_CONSTANT(float, fNormalDecodeBias); + PAD_FLOAT2; +}; + +// Must match the GS from Shaders_GL.cpp +struct PerPassConstantStruct +{ + float4 f4Jitter; + + float2 f2Offset; + float fSliceIndex; + unsigned int uSliceIndex; +}; + +CBUFFER PerPassConstantBuffer REGISTER(b1) +{ + DECLARE_CONSTANT(PerPassConstantStruct, PerPassConstants); +}; + +// When input textures are MSAA, fetch sample 0 only +#define g_iSampleIndex 0 + +#ifdef __cplusplus +} // namespace SSAO +} // namespace GFSDK +#endif + +#endif //CONSTANT_BUFFERS_H diff --git a/src/shaders/src/CopyDepth_PS.hlsl b/src/shaders/src/CopyDepth_PS.hlsl new file mode 100644 index 0000000..6bba531 --- /dev/null +++ b/src/shaders/src/CopyDepth_PS.hlsl @@ -0,0 +1,41 @@ +/* +#permutation RESOLVE_DEPTH 0 1 +*/ + +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "FullScreenTriangle_VS.hlsl" +#include "ConstantBuffers.hlsl" + +#if API_GL +#define DepthTexture g_t0 +#define DepthTextureMS g_t0 +#endif + +#if RESOLVE_DEPTH +Texture2DMS DepthTextureMS : register(t0); +#else +Texture2D DepthTexture : register(t0); +#endif + +//---------------------------------------------------------------------------------- +float CopyDepth_PS(PostProc_VSOut IN) : SV_TARGET +{ + AddViewportOrigin(IN); + +#if RESOLVE_DEPTH + float ViewDepth = DepthTextureMS.Load(int2(IN.pos.xy), g_iSampleIndex); +#else + float ViewDepth = DepthTexture.Load(int3(IN.pos.xy, 0)); +#endif + + return ViewDepth; +} diff --git a/src/shaders/src/DebugAO_PS.hlsl b/src/shaders/src/DebugAO_PS.hlsl new file mode 100644 index 0000000..4421f00 --- /dev/null +++ b/src/shaders/src/DebugAO_PS.hlsl @@ -0,0 +1,169 @@ +/* +#permutation ENABLE_BLUR 0 1 +*/ + +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "ConstantBuffers.hlsl" +#include "FullScreenTriangle_VS.hlsl" + +#define g_AOResolution g_FullResolution +#define g_InvAOResolution g_f2InvFullResolution + +#define QUARTER_RES_STEPS 1 + +Texture2D LinearDepthTexture : register(t0); +Texture2D RandomTexture : register(t1); +sampler PointClampSampler : register(s0); +sampler PointWrapSampler : register(s1); + +//---------------------------------------------------------------------------------- +float InvLength(float2 v) +{ + return rsqrt(dot(v,v)); +} + +//---------------------------------------------------------------------------------- +float3 UVToEye(float2 UV, float ViewDepth) +{ + UV = g_f2UVToViewA * UV + g_f2UVToViewB; + return float3(UV * ViewDepth, ViewDepth); +} + +//---------------------------------------------------------------------------------- +float3 FetchEyePos(float2 UV) +{ + float HardwareDepth = LinearDepthTexture.SampleLevel(PointClampSampler, UV, 0); + return UVToEye(UV, HardwareDepth); +} + +//---------------------------------------------------------------------------------- +float3 MinDiff(float3 P, float3 Pr, float3 Pl) +{ + float3 V1 = Pr - P; + float3 V2 = P - Pl; + return (dot(V1,V1) < dot(V2,V2)) ? V1 : V2; +} + +//---------------------------------------------------------------------------------- +float Falloff(float DistanceSquare) +{ + // 1 scalar mad instruction + return DistanceSquare * g_fNegInvR2 + 1.0f; +} + +//---------------------------------------------------------------------------------- +float2 RotateDirection(float2 Dir, float2 CosSin) +{ + return float2(Dir.x*CosSin.x - Dir.y*CosSin.y, + Dir.x*CosSin.y + Dir.y*CosSin.x); +} + +//---------------------------------------------------------------------------------- +float ComputeAO(float3 P, float3 N, float3 S) +{ + float3 V = S - P; + float VdotV = dot(V, V); + float NdotV = dot(N, V) * rsqrt(VdotV); + return saturate(NdotV - g_fNDotVBias) * saturate(Falloff(VdotV)); +} + +//---------------------------------------------------------------------------------- +#if ENABLE_BLUR +float2 DebugAO_PS(PostProc_VSOut IN) : SV_TARGET +#else +float4 DebugAO_PS(PostProc_VSOut IN) : SV_TARGET +#endif +{ + float3 P = FetchEyePos(IN.uv); + float BlurDepth = P.z; + +#if USE_RANDOM_TEXTURE + // (cos(Alpha),sin(Alpha),rand1,rand2) + float4 Rand = RandomTexture.Sample(PointWrapSampler, IN.pos.xy / RANDOM_TEXTURE_WIDTH); +#else + float4 Rand = float4(1,0,1,1); +#endif + + // Compute projection of disk of radius g_R into screen space + float RadiusPixels = g_fRadiusToScreen / P.z; + + // Early exit if the radius is smaller than one pixel + if (RadiusPixels < 1.0) + { +#if ENABLE_BLUR + return float2(1.0, BlurDepth); +#else + return 1.0; +#endif + } + +#if QUARTER_RES_STEPS + RadiusPixels /= 4; +#endif + + // Divide by NUM_STEPS+1 so that the farthest samples are not fully attenuated + float StepSizePixels = RadiusPixels / (NUM_STEPS + 1); + + // Reconstruct view-space normal from nearest neighbors + float3 Pr = FetchEyePos(IN.uv + float2(g_InvAOResolution.x, 0)); + float3 Pl = FetchEyePos(IN.uv + float2(-g_InvAOResolution.x, 0)); + float3 Pt = FetchEyePos(IN.uv + float2(0, g_InvAOResolution.y)); + float3 Pb = FetchEyePos(IN.uv + float2(0, -g_InvAOResolution.y)); + float3 N = normalize(cross(MinDiff(P, Pr, Pl), MinDiff(P, Pt, Pb))); + + const float Alpha = 2.0 * GFSDK_PI / NUM_DIRECTIONS; + float NearAO = 0; + float FarAO = 0; + + [unroll] + for (float DirectionIndex = 0; DirectionIndex < NUM_DIRECTIONS; ++DirectionIndex) + { + float Angle = Alpha * DirectionIndex; + + // Compute normalized 2D direction + float2 dir = RotateDirection(float2(cos(Angle), sin(Angle)), Rand.xy); + + // Jitter starting point within the first step + float RayPixels = (Rand.z * StepSizePixels + 1.0); + + [unroll] + for (float StepIndex = 0; StepIndex < NUM_STEPS; ++StepIndex) + { +#if QUARTER_RES_STEPS + float2 snappedUV = round(RayPixels * dir) * (g_InvAOResolution * 4.0) + IN.uv; +#else + float2 snappedUV = round(RayPixels * dir) * g_InvAOResolution + IN.uv; +#endif + float3 S = FetchEyePos(snappedUV); + RayPixels += StepSizePixels; + + if (StepIndex == 0) + { + NearAO += ComputeAO(P, N, S); + } + else + { + FarAO += ComputeAO(P, N, S); + } + } + } + + float AO = (NearAO * g_fNearAOAmount) + (FarAO * g_fFarAOAmount); + AO /= (NUM_DIRECTIONS * NUM_STEPS); + AO = saturate(1.0 - AO * 2.0); + +#if ENABLE_BLUR + return float2(AO, BlurDepth); +#else + return pow(saturate(AO), g_fPowExponent); +#endif +} diff --git a/src/shaders/src/DebugNormals_PS.hlsl b/src/shaders/src/DebugNormals_PS.hlsl new file mode 100644 index 0000000..9df87ac --- /dev/null +++ b/src/shaders/src/DebugNormals_PS.hlsl @@ -0,0 +1,42 @@ +/* +#permutation FETCH_GBUFFER_NORMAL 0 1 2 +*/ + +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "ReconstructNormal_Common.hlsl" + +//---------------------------------------------------------------------------------- +float3 FetchFullResViewNormal(PostProc_VSOut IN, float3 ViewPosition) +{ +#if FETCH_GBUFFER_NORMAL + return FetchFullResViewNormal_GBuffer(IN); +#else + return ReconstructNormal(IN.uv, ViewPosition); +#endif +} + +//---------------------------------------------------------------------------------- +float4 DebugNormals_PS(PostProc_VSOut IN) : SV_TARGET +{ + SubtractViewportOrigin(IN); + + float3 ViewPosition = FetchFullResViewPos(IN.uv); + float3 ViewNormal = -FetchFullResViewNormal(IN, ViewPosition); + + float3 OutColor = + (g_iDebugNormalComponent == 0) ? ViewNormal.xxx : + (g_iDebugNormalComponent == 1) ? ViewNormal.yyy : + (g_iDebugNormalComponent == 2) ? ViewNormal.zzz : + ViewNormal; + + return float4(OutColor, 0); +} diff --git a/src/shaders/src/DeinterleaveDepth_PS.hlsl b/src/shaders/src/DeinterleaveDepth_PS.hlsl new file mode 100644 index 0000000..fb0e281 --- /dev/null +++ b/src/shaders/src/DeinterleaveDepth_PS.hlsl @@ -0,0 +1,95 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "ConstantBuffers.hlsl" +#include "FullScreenTriangle_VS.hlsl" + +// Do not use gather instructions on GL to support Core 3.2 +#define USE_GATHER4 !API_GL + +#define MRT_COUNT MAX_NUM_MRTS + +#if API_GL +#define DepthTexture g_t0 +#endif + +Texture2D DepthTexture : register(t0); +sampler PointClampSampler : register(s0); + +//---------------------------------------------------------------------------------- +struct PSOutputDepthTextures +{ + float Z00 : SV_Target0; + float Z10 : SV_Target1; + float Z20 : SV_Target2; + float Z30 : SV_Target3; +#if MRT_COUNT == 8 + float Z01 : SV_Target4; + float Z11 : SV_Target5; + float Z21 : SV_Target6; + float Z31 : SV_Target7; +#endif +}; + +#if USE_GATHER4 + +//---------------------------------------------------------------------------------- +PSOutputDepthTextures DeinterleaveDepth_PS(PostProc_VSOut IN) +{ + PSOutputDepthTextures OUT; + + IN.pos.xy = floor(IN.pos.xy) * 4.0 + (g_PerPassConstants.f2Offset + 0.5); + IN.uv = IN.pos.xy * g_f2InvFullResolution; + + // Gather sample ordering: (-,+),(+,+),(+,-),(-,-), + float4 S0 = DepthTexture.GatherRed(PointClampSampler, IN.uv); + float4 S1 = DepthTexture.GatherRed(PointClampSampler, IN.uv, int2(2,0)); + + OUT.Z00 = S0.w; + OUT.Z10 = S0.z; + OUT.Z20 = S1.w; + OUT.Z30 = S1.z; + +#if MRT_COUNT == 8 + OUT.Z01 = S0.x; + OUT.Z11 = S0.y; + OUT.Z21 = S1.x; + OUT.Z31 = S1.y; +#endif + + return OUT; +} + +#else + +//---------------------------------------------------------------------------------- +PSOutputDepthTextures DeinterleaveDepth_PS(PostProc_VSOut IN) +{ + IN.pos.xy = floor(IN.pos.xy) * 4.0 + g_PerPassConstants.f2Offset; + IN.uv = IN.pos.xy * g_f2InvFullResolution; + + PSOutputDepthTextures OUT; + + OUT.Z00 = DepthTexture.Sample(PointClampSampler, IN.uv); + OUT.Z10 = DepthTexture.Sample(PointClampSampler, IN.uv, int2(1,0)); + OUT.Z20 = DepthTexture.Sample(PointClampSampler, IN.uv, int2(2,0)); + OUT.Z30 = DepthTexture.Sample(PointClampSampler, IN.uv, int2(3,0)); + +#if MRT_COUNT == 8 + OUT.Z01 = DepthTexture.Sample(PointClampSampler, IN.uv, int2(0,1)); + OUT.Z11 = DepthTexture.Sample(PointClampSampler, IN.uv, int2(1,1)); + OUT.Z21 = DepthTexture.Sample(PointClampSampler, IN.uv, int2(2,1)); + OUT.Z31 = DepthTexture.Sample(PointClampSampler, IN.uv, int2(3,1)); +#endif + + return OUT; +} + +#endif diff --git a/src/shaders/src/FetchNormal_Common.hlsl b/src/shaders/src/FetchNormal_Common.hlsl new file mode 100644 index 0000000..7bfa556 --- /dev/null +++ b/src/shaders/src/FetchNormal_Common.hlsl @@ -0,0 +1,60 @@ +// This code contains NVIDIA Confidential Information and is disclosed +// under the Mutual Non-Disclosure Agreement. +// +// Notice +// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES +// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO +// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT, +// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. +// +// NVIDIA Corporation assumes no responsibility for the consequences of use of such +// information or for any infringement of patents or other rights of third parties that may +// result from its use. No license is granted by implication or otherwise under any patent +// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless +// expressly authorized by NVIDIA. Details are subject to change without notice. +// This code supersedes and replaces all information previously supplied. +// NVIDIA Corporation products are not authorized for use as critical +// components in life support devices or systems without express written approval of +// NVIDIA Corporation. +// +// Copyright © 2008-2016 NVIDIA Corporation. All rights reserved. +// +// NVIDIA Corporation and its licensors retain all intellectual property and proprietary +// rights in and to this software and related documentation and any modifications thereto. +// Any use, reproduction, disclosure or distribution of this software and related +// documentation without an express license agreement from NVIDIA Corporation is +// strictly prohibited. +// + +#include "ConstantBuffers.hlsl" + +#if API_GL +#define FullResNormalTexture g_t1 +#define FullResNormalTextureMS g_t1 +#endif + +#if FETCH_GBUFFER_NORMAL == 2 +Texture2DMS FullResNormalTextureMS : register(t1); +#else +Texture2D FullResNormalTexture : register(t1); +#endif + +//---------------------------------------------------------------------------------- +float3 FetchFullResWorldNormal_GBuffer(PostProc_VSOut IN) +{ + AddViewportOrigin(IN); + +#if FETCH_GBUFFER_NORMAL == 2 + return FullResNormalTextureMS.Load(int2(IN.pos.xy), g_iSampleIndex).xyz; +#else + return FullResNormalTexture.Load(int3(IN.pos.xy, 0)).xyz; +#endif +} + +//---------------------------------------------------------------------------------- +float3 FetchFullResViewNormal_GBuffer(PostProc_VSOut IN) +{ + float3 WorldNormal = FetchFullResWorldNormal_GBuffer(IN) * g_fNormalDecodeScale + g_fNormalDecodeBias; + float3 ViewNormal = normalize(mul(WorldNormal, (float3x3)g_f44NormalMatrix)); + return ViewNormal; +} diff --git a/src/shaders/src/FullScreenTriangle_VS.hlsl b/src/shaders/src/FullScreenTriangle_VS.hlsl new file mode 100644 index 0000000..973a334 --- /dev/null +++ b/src/shaders/src/FullScreenTriangle_VS.hlsl @@ -0,0 +1,43 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "ConstantBuffers.hlsl" + +struct PostProc_VSOut +{ + float4 pos : SV_Position; + float2 uv : TEXCOORD0; +}; + +//---------------------------------------------------------------------------------- +// Vertex shader that generates a full-screen triangle with texcoords +// Assuming a Draw(3,0) call. +//---------------------------------------------------------------------------------- +PostProc_VSOut FullScreenTriangle_VS( uint VertexId : SV_VertexID ) +{ + PostProc_VSOut output = (PostProc_VSOut)0.0f; + output.uv = float2( (VertexId << 1) & 2, VertexId & 2 ); + output.pos = float4( output.uv * float2( 2.0f, -2.0f ) + float2( -1.0f, 1.0f) , 0.0f, 1.0f ); + return output; +} + +//---------------------------------------------------------------------------------- +void AddViewportOrigin(inout PostProc_VSOut IN) +{ + IN.pos.xy += g_f2InputViewportTopLeft; + IN.uv = IN.pos.xy * g_f2InvFullResolution; +} + +//---------------------------------------------------------------------------------- +void SubtractViewportOrigin(inout PostProc_VSOut IN) +{ + IN.pos.xy -= g_f2InputViewportTopLeft; + IN.uv = IN.pos.xy * g_f2InvFullResolution; +} diff --git a/src/shaders/src/LinearizeDepth_PS.hlsl b/src/shaders/src/LinearizeDepth_PS.hlsl new file mode 100644 index 0000000..d0881db --- /dev/null +++ b/src/shaders/src/LinearizeDepth_PS.hlsl @@ -0,0 +1,49 @@ +/* +#permutation RESOLVE_DEPTH 0 1 +*/ + +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "FullScreenTriangle_VS.hlsl" +#include "ConstantBuffers.hlsl" + +#if API_GL +#define DepthTexture g_t0 +#define DepthTextureMS g_t0 +#endif + +#if RESOLVE_DEPTH +Texture2DMS DepthTextureMS : register(t0); +#else +Texture2D DepthTexture : register(t0); +#endif + +//---------------------------------------------------------------------------------- +float ConvertToViewDepth(float HardwareDepth) +{ + float NormalizedDepth = saturate(g_fInverseDepthRangeA * HardwareDepth + g_fInverseDepthRangeB); + + return 1.0 / (NormalizedDepth * g_fLinearizeDepthA + g_fLinearizeDepthB); +} + +//---------------------------------------------------------------------------------- +float LinearizeDepth_PS(PostProc_VSOut IN) : SV_TARGET +{ + AddViewportOrigin(IN); + +#if RESOLVE_DEPTH + float HardwareDepth = DepthTextureMS.Load(int2(IN.pos.xy), g_iSampleIndex); +#else + float HardwareDepth = DepthTexture.Load(int3(IN.pos.xy, 0)); +#endif + + return ConvertToViewDepth(HardwareDepth); +} diff --git a/src/shaders/src/ReconstructNormal_Common.hlsl b/src/shaders/src/ReconstructNormal_Common.hlsl new file mode 100644 index 0000000..3f53eab --- /dev/null +++ b/src/shaders/src/ReconstructNormal_Common.hlsl @@ -0,0 +1,95 @@ +// This code contains NVIDIA Confidential Information and is disclosed +// under the Mutual Non-Disclosure Agreement. +// +// Notice +// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES +// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO +// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT, +// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. +// +// NVIDIA Corporation assumes no responsibility for the consequences of use of such +// information or for any infringement of patents or other rights of third parties that may +// result from its use. No license is granted by implication or otherwise under any patent +// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless +// expressly authorized by NVIDIA. Details are subject to change without notice. +// This code supersedes and replaces all information previously supplied. +// NVIDIA Corporation products are not authorized for use as critical +// components in life support devices or systems without express written approval of +// NVIDIA Corporation. +// +// Copyright © 2008-2016 NVIDIA Corporation. All rights reserved. +// +// NVIDIA Corporation and its licensors retain all intellectual property and proprietary +// rights in and to this software and related documentation and any modifications thereto. +// Any use, reproduction, disclosure or distribution of this software and related +// documentation without an express license agreement from NVIDIA Corporation is +// strictly prohibited. +// + +#include "ConstantBuffers.hlsl" +#include "FullScreenTriangle_VS.hlsl" +#include "FetchNormal_Common.hlsl" + +// Disabled as a WAR for nvbug 1370844 +#define USE_GATHER4 0 + +#if API_GL +#define FullResDepthTexture g_t0 +#endif + +Texture2D FullResDepthTexture : register(t0); + +sampler PointClampSampler : register(s0); + +//---------------------------------------------------------------------------------- +float3 UVToView(float2 UV, float viewDepth) +{ + UV = g_f2UVToViewA * UV + g_f2UVToViewB; + return float3(UV * viewDepth, viewDepth); +} + +//---------------------------------------------------------------------------------- +float3 FetchFullResViewPos(float2 UV) +{ + float ViewDepth = FullResDepthTexture.SampleLevel(PointClampSampler, UV, 0); + return UVToView(UV, ViewDepth); +} + +//---------------------------------------------------------------------------------- +float3 MinDiff(float3 P, float3 Pr, float3 Pl) +{ + float3 V1 = Pr - P; + float3 V2 = P - Pl; + return (dot(V1,V1) < dot(V2,V2)) ? V1 : V2; +} + +//---------------------------------------------------------------------------------- +#if USE_GATHER4 +float4 GatherR4(Texture2D Texture, float2 UV, int2 o0, int2 o1, int2 o2, int2 o3) +{ + return float4( + Texture.SampleLevel(PointClampSampler, UV, 0, o0).x, + Texture.SampleLevel(PointClampSampler, UV, 0, o1).x, + Texture.SampleLevel(PointClampSampler, UV, 0, o2).x, + Texture.SampleLevel(PointClampSampler, UV, 0, o3).x + ); +} +#endif + +//---------------------------------------------------------------------------------- +float3 ReconstructNormal(float2 UV, float3 P) +{ +#if USE_GATHER4 + float4 S = GatherR4(FullResDepthTexture, UV, int2(1,0), int2(-1,0), int2(0,1), int2(0,-1)); + float3 Pr = UVToView(float2(UV.x + g_f2InvFullResolution.x, UV.y), S.x); + float3 Pl = UVToView(float2(UV.x - g_f2InvFullResolution.x, UV.y), S.y); + float3 Pt = UVToView(float2(UV.x, UV.y + g_f2InvFullResolution.y), S.z); + float3 Pb = UVToView(float2(UV.x, UV.y - g_f2InvFullResolution.y), S.w); +#else + float3 Pr = FetchFullResViewPos(UV + float2(g_f2InvFullResolution.x, 0)); + float3 Pl = FetchFullResViewPos(UV + float2(-g_f2InvFullResolution.x, 0)); + float3 Pt = FetchFullResViewPos(UV + float2(0, g_f2InvFullResolution.y)); + float3 Pb = FetchFullResViewPos(UV + float2(0, -g_f2InvFullResolution.y)); +#endif + return normalize(cross(MinDiff(P, Pr, Pl), MinDiff(P, Pt, Pb))); +} diff --git a/src/shaders/src/ReconstructNormal_PS.hlsl b/src/shaders/src/ReconstructNormal_PS.hlsl new file mode 100644 index 0000000..1a15230 --- /dev/null +++ b/src/shaders/src/ReconstructNormal_PS.hlsl @@ -0,0 +1,26 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "ReconstructNormal_Common.hlsl" + +//---------------------------------------------------------------------------------- +float3 FetchFullResViewNormal(PostProc_VSOut IN, float3 ViewPosition) +{ + return ReconstructNormal(IN.uv, ViewPosition); +} + +//---------------------------------------------------------------------------------- +float4 ReconstructNormal_PS(PostProc_VSOut IN) : SV_TARGET +{ + float3 ViewPosition = FetchFullResViewPos(IN.uv); + float3 ViewNormal = FetchFullResViewNormal(IN, ViewPosition); + + return float4(ViewNormal * 0.5 + 0.5, 0); +} diff --git a/src/shaders/src/ReinterleaveAO_PS.hlsl b/src/shaders/src/ReinterleaveAO_PS.hlsl new file mode 100644 index 0000000..e9cc5f4 --- /dev/null +++ b/src/shaders/src/ReinterleaveAO_PS.hlsl @@ -0,0 +1,70 @@ +/* +#permutation ENABLE_BLUR 0 1 +*/ + +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "ConstantBuffers.hlsl" +#include "FullScreenTriangle_VS.hlsl" + +#define USE_INTEGER_MATH !API_GL + +#if API_GL +#define AOTexture g_t0 +#define DepthTexture g_t1 +#endif + +Texture2DArray AOTexture : register(t0); +Texture2D DepthTexture : register(t1); +sampler PointSampler : register(s0); + +//---------------------------------------------------------------------------------- +struct PSOut +{ +#if ENABLE_BLUR + float2 AOZ : SV_TARGET; +#else + float4 AO : SV_TARGET; +#endif +}; + +//------------------------------------------------------------------------- +PSOut ReinterleaveAO_PS(PostProc_VSOut IN) +{ + PSOut OUT; + +#if !ENABLE_BLUR + SubtractViewportOrigin(IN); +#endif + +#if USE_INTEGER_MATH + int2 FullResPos = int2(IN.pos.xy); + int2 Offset = FullResPos & 3; + int SliceId = Offset.y * 4 + Offset.x; + int2 QuarterResPos = FullResPos >> 2; +#else + float2 FullResPos = floor(IN.pos.xy); + float2 Offset = fmod(abs(FullResPos), float2(4,4)); + float SliceId = Offset.y * 4.0 + Offset.x; + float2 QuarterResPos = FullResPos / 4.0; +#endif + +#if ENABLE_BLUR + float AO = AOTexture.Load(int4(QuarterResPos, SliceId, 0)); + float ViewDepth = DepthTexture.Sample(PointSampler, IN.uv); + OUT.AOZ = float2(AO, ViewDepth); +#else + float AO = AOTexture.Load(int4(QuarterResPos, SliceId, 0)); + OUT.AO = pow(saturate(AO), g_fPowExponent); +#endif + + return OUT; +} diff --git a/src/shaders/src/SharedDefines.h b/src/shaders/src/SharedDefines.h new file mode 100644 index 0000000..e912fc7 --- /dev/null +++ b/src/shaders/src/SharedDefines.h @@ -0,0 +1,37 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +// Number of sampled directions per pixel +#ifndef NUM_DIRECTIONS +#define NUM_DIRECTIONS 8 +#endif + +// Number of steps per direction +#ifndef NUM_STEPS +#define NUM_STEPS 4 +#endif + +// To disable the per-pixel randomization +#ifndef USE_RANDOM_TEXTURE +#define USE_RANDOM_TEXTURE 1 +#endif + +// Width of the tiled random texture +#ifndef RANDOM_TEXTURE_WIDTH +#define RANDOM_TEXTURE_WIDTH 4 +#endif + +#ifndef GFSDK_PI +#define GFSDK_PI 3.14159265f +#endif + +#ifndef MAX_NUM_MRTS +#define MAX_NUM_MRTS 8 +#endif -- cgit v1.2.3