[{"data":1,"prerenderedAt":18118},["ShallowReactive",2],{"page-\u002Fgraphy\u002Fopengel\u002F光源和投光物":3},{"id":4,"title":5,"body":6,"description":18111,"extension":18112,"meta":18113,"navigation":183,"path":18114,"seo":18115,"stem":18116,"__hash__":18117},"content\u002Fgraphy\u002Fopengel\u002F光源和投光物.md","平行光",{"type":7,"value":8,"toc":18106},"minimark",[9,12,21,24,30,45,56,59,5820,5823,5830,5836,5846,5859,5862,5868,5871,5875,5890,6071,6074,6077,11736,11739,11753,11756,11761,11787,11790,11794,11797,11808,11851,11854,11924,11927,12024,12027,12031,12038,12041,12044,12050,12053,12219,12230,12342,12349,12355,12358,18102],[10,11,5],"h1",{"id":5},[13,14,15,16,20],"p",{},"当一个光源处于很远的地方时，来自光源的每条光线就会近似于互相平行。不论物体和\u002F或者观察者的位置，看起来好像所有的光都来自于同一个方向。当我们使用一个假设光源处于",[17,18,19],"strong",{},"无限","远处的模型时，它就被称为定向光，因为它的所有光线都有着相同的方向，它与光源的位置是没有关系的。",[13,22,23],{},"定向光非常好的一个例子就是太阳。太阳距离我们并不是无限远，但它已经远到在光照计算中可以把它视为无限远了。所以来自太阳的所有光线将被模拟为平行光线，我们可以在下图看到：",[13,25,26],{},[27,28],"img",{"alt":27,"src":29},".\u002Fassets\u002Flight_casters_directional.png",[13,31,32,33,36,37,40,41,44],{},"因为所有的",[17,34,35],{},"光线都是平行的","，所以",[17,38,39],{},"物体与光源的相对位置是不重要的","，因为",[17,42,43],{},"对场景中每一个物体光的方向都是一致的。由于光的位置向量保持一致","，场景中每个物体的光照计算将会是类似的。",[13,46,47,48,51,52,55],{},"我们可以定义一个光线方向向量",[17,49,50],{},"而不是位置向量来模拟一个定向光","。着色器的计算基本保持不变，但这次我们将直接",[17,53,54],{},"使用光的direction向量","而不是通过position来计算lightDir向量。",[13,57,58],{},"将光源方块注释之后，完整的平行光代码为：",[60,61,66],"pre",{"className":62,"code":63,"language":64,"meta":65,"style":65},"language-c++ shiki shiki-themes github-light github-dark","#include \u003Cglad\u002Fglad.h>\n#include \u003CGLFW\u002Fglfw3.h>\n#include \u003Ciostream>\n#include \u003Ccmath>\n#include \u003Cimgui.h>\n#include \u003Cimgui_impl_glfw.h>\n#include \u003Cimgui_impl_opengl3.h>\n#include \u003Copencv2\u002Fopencv.hpp>\n#include \u003Copencv2\u002Fimgcodecs.hpp>\n#include \"utils\u002Fshader.h\"\n#include \"utils\u002FglmCompute.h\"\n#include \"include\u002Fdpi_stabilizer.h\"\n#include \"include\u002Fimgui_manager.h\"\n\nusing namespace glm;\nusing namespace cv;\n\n\u002F\u002F 使用 OpenCV 加载纹理\nunsigned int loadTexture(const char* path) {\n    unsigned int textureID;\n    glGenTextures(1, &textureID);\n    \n    \u002F\u002F 使用 OpenCV 读取图像\n    Mat image = imread(path, IMREAD_COLOR);\n    if (image.empty()) {\n        std::cout \u003C\u003C \"Failed to load texture at path: \" \u003C\u003C path \u003C\u003C std::endl;\n        return textureID;\n    }\n    \n    \u002F\u002F OpenCV 使用 BGR，OpenGL 使用 RGB，需要转换\n    Mat rgbImage;\n    cvtColor(image, rgbImage, COLOR_BGR2RGB);\n    \n    \u002F\u002F 翻转图像（OpenGL 期望的 Y 轴方向）\n    flip(rgbImage, rgbImage, 0);\n    \n    glBindTexture(GL_TEXTURE_2D, textureID);\n    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, rgbImage.cols, rgbImage.rows, 0, GL_RGB, GL_UNSIGNED_BYTE, rgbImage.data);\n    glGenerateMipmap(GL_TEXTURE_2D);\n    \n    \u002F\u002F 设置纹理参数\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);\n    \n    return textureID;\n}\n\n\u002F\u002F 窗口大小改变时的回调函数\nvoid framebuffer_size_callback(GLFWwindow* window, int width, int height) {\n    glViewport(0, 0, width, height);\n}\n\n\n\u002F\u002F 全局变量\nfloat deltaTime = 0.0f; \u002F\u002F 当前帧与上一帧的时间差\nfloat lastFrame = 0.0f; \u002F\u002F 上一帧的时间\n\n\u002F\u002F DPI 稳定器实例\nDPIStabilizer dpiStabilizer(0.1f, 50.0f, 0.8f);\n\n\u002F\u002F ImGui 管理器实例\nImGuiManager imguiManager;\n\n\u002F\u002F 简化的输入处理函数\nvoid processInput(GLFWwindow *window){\n    \u002F\u002F 使用 DPI 稳定器处理所有输入\n    dpiStabilizer.processKeyboardInput(window);\n\n    if (glfwGetKey(window, GLFW_KEY_F2) == GLFW_PRESS) {\n        imguiManager.toggleWindow(\"控制面板\");\n    }\n    if (glfwGetKey(window, GLFW_KEY_F3) == GLFW_PRESS) {\n        imguiManager.toggleWindow(\"性能监控\");\n    }\n    if (glfwGetKey(window, GLFW_KEY_F4) == GLFW_PRESS) {\n        imguiManager.toggleWindow(\"调试信息\");\n    }\n    \n    \u002F\u002F 显示统计信息 (按 T 键)\n    if (glfwGetKey(window, GLFW_KEY_T) == GLFW_PRESS) {\n        std::cout \u003C\u003C dpiStabilizer.getStats() \u003C\u003C std::endl;\n    }\n}\n\nint main() {\n    \u002F\u002F 投影矩阵\n    mat4 projection = perspective(radians(45.0f), (float)800 \u002F (float)600, 0.1f, 100.0f);\n\n    \u002F\u002F 初始化GLFW\n    glfwInit();\n    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);\n    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);\n    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);\n    \n    \u002F\u002F 设置 DPI 感知提示\n    DPIStabilizer::setDPIHint();\n\n    \u002F\u002F 创建窗口\n    GLFWwindow* window = glfwCreateWindow(800, 600, \"OpenGL Window\", NULL, NULL);\n    if (window == NULL) {\n        std::cout \u003C\u003C \"Failed to create GLFW window\" \u003C\u003C std::endl;\n        glfwTerminate();\n        return -1;\n    }\n\n    glfwMakeContextCurrent(window);\n    glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);\n    \n    \u002F\u002F 初始化 DPI 稳定器\n    dpiStabilizer.initialize(window);\n\n    \u002F\u002F 初始化GLAD\n    if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {\n        std::cout \u003C\u003C \"Failed to initialize GLAD\" \u003C\u003C std::endl;\n        return -1;\n    }\n\n    \u002F\u002F 初始化 ImGui 管理器\n    imguiManager.initialize(window);\n    \n    \u002F\u002F 注册窗口\n    imguiManager.registerWindow(\"Hello ImGui!\", []() {\n        ImGui::Text(\"DPI 稳定器状态: %s\", dpiStabilizer.isMouseCaptured() ? \"已捕获\" : \"已释放\");\n        ImGui::Text(\"鼠标敏感度: %.3f\", dpiStabilizer.getSensitivity());\n        \n        if (ImGui::Button(\"重置统计\")) {\n            dpiStabilizer.resetStats();\n        }\n        \n        float sensitivity = dpiStabilizer.getSensitivity();\n        if (ImGui::SliderFloat(\"鼠标敏感度\", &sensitivity, 0.01f, 0.5f)) {\n            dpiStabilizer.setSensitivity(sensitivity);\n        }\n    });\n    \n    imguiManager.registerWindow(\"控制面板\", []() {\n        ImGuiIO& io = ImGui::GetIO();\n        ImGui::Text(\"FPS: %.1f\", io.Framerate);\n        ImGui::Text(\"帧时间: %.3f ms\", 1000.0f \u002F io.Framerate);\n    });\n    \n\n    \u002F\u002F 启用深度测试\n    glEnable(GL_DEPTH_TEST);\n\n    float vertices[] = {\n    \u002F\u002F 立方体顶点数据（位置 + 法线 + 纹理坐标）\n    \u002F\u002F 位置(3) + 法线(3) + 纹理坐标(2) = 8个浮点数\n    \u002F\u002F 前面\n    -0.5f, -0.5f,  0.5f,  0.0f,  0.0f,  1.0f,  0.0f, 0.0f,\n     0.5f, -0.5f,  0.5f,  0.0f,  0.0f,  1.0f,  1.0f, 0.0f,\n     0.5f,  0.5f,  0.5f,  0.0f,  0.0f,  1.0f,  1.0f, 1.0f,\n     0.5f,  0.5f,  0.5f,  0.0f,  0.0f,  1.0f,  1.0f, 1.0f,\n    -0.5f,  0.5f,  0.5f,  0.0f,  0.0f,  1.0f,  0.0f, 1.0f,\n    -0.5f, -0.5f,  0.5f,  0.0f,  0.0f,  1.0f,  0.0f, 0.0f,\n    \n    \u002F\u002F 后面\n    -0.5f, -0.5f, -0.5f,  0.0f,  0.0f, -1.0f,  0.0f, 0.0f,\n     0.5f, -0.5f, -0.5f,  0.0f,  0.0f, -1.0f,  1.0f, 0.0f,\n     0.5f,  0.5f, -0.5f,  0.0f,  0.0f, -1.0f,  1.0f, 1.0f,\n     0.5f,  0.5f, -0.5f,  0.0f,  0.0f, -1.0f,  1.0f, 1.0f,\n    -0.5f,  0.5f, -0.5f,  0.0f,  0.0f, -1.0f,  0.0f, 1.0f,\n    -0.5f, -0.5f, -0.5f,  0.0f,  0.0f, -1.0f,  0.0f, 0.0f,\n    \n    \u002F\u002F 左面\n    -0.5f,  0.5f,  0.5f, -1.0f,  0.0f,  0.0f,  1.0f, 0.0f,\n    -0.5f,  0.5f, -0.5f, -1.0f,  0.0f,  0.0f,  1.0f, 1.0f,\n    -0.5f, -0.5f, -0.5f, -1.0f,  0.0f,  0.0f,  0.0f, 1.0f,\n    -0.5f, -0.5f, -0.5f, -1.0f,  0.0f,  0.0f,  0.0f, 1.0f,\n    -0.5f, -0.5f,  0.5f, -1.0f,  0.0f,  0.0f,  0.0f, 0.0f,\n    -0.5f,  0.5f,  0.5f, -1.0f,  0.0f,  0.0f,  1.0f, 0.0f,\n    \n    \u002F\u002F 右面\n     0.5f,  0.5f,  0.5f,  1.0f,  0.0f,  0.0f,  1.0f, 0.0f,\n     0.5f,  0.5f, -0.5f,  1.0f,  0.0f,  0.0f,  1.0f, 1.0f,\n     0.5f, -0.5f, -0.5f,  1.0f,  0.0f,  0.0f,  0.0f, 1.0f,\n     0.5f, -0.5f, -0.5f,  1.0f,  0.0f,  0.0f,  0.0f, 1.0f,\n     0.5f, -0.5f,  0.5f,  1.0f,  0.0f,  0.0f,  0.0f, 0.0f,\n     0.5f,  0.5f,  0.5f,  1.0f,  0.0f,  0.0f,  1.0f, 0.0f,\n    \n    \u002F\u002F 下面\n    -0.5f, -0.5f, -0.5f,  0.0f, -1.0f,  0.0f,  0.0f, 1.0f,\n     0.5f, -0.5f, -0.5f,  0.0f, -1.0f,  0.0f,  1.0f, 1.0f,\n     0.5f, -0.5f,  0.5f,  0.0f, -1.0f,  0.0f,  1.0f, 0.0f,\n     0.5f, -0.5f,  0.5f,  0.0f, -1.0f,  0.0f,  1.0f, 0.0f,\n    -0.5f, -0.5f,  0.5f,  0.0f, -1.0f,  0.0f,  0.0f, 0.0f,\n    -0.5f, -0.5f, -0.5f,  0.0f, -1.0f,  0.0f,  0.0f, 1.0f,\n    \n    \u002F\u002F 上面\n    -0.5f,  0.5f, -0.5f,  0.0f,  1.0f,  0.0f,  0.0f, 1.0f,\n     0.5f,  0.5f, -0.5f,  0.0f,  1.0f,  0.0f,  1.0f, 1.0f,\n     0.5f,  0.5f,  0.5f,  0.0f,  1.0f,  0.0f,  1.0f, 0.0f,\n     0.5f,  0.5f,  0.5f,  0.0f,  1.0f,  0.0f,  1.0f, 0.0f,\n    -0.5f,  0.5f,  0.5f,  0.0f,  1.0f,  0.0f,  0.0f, 0.0f,\n    -0.5f,  0.5f, -0.5f,  0.0f,  1.0f,  0.0f,  0.0f, 1.0f\n};\n    \n    \u002F\u002F 创建VAO\n    unsigned int VAO;\n    glGenVertexArrays(1, &VAO);\n    glBindVertexArray(VAO); \u002F\u002F 绑定VAO\n\n    \u002F\u002F 创建VBO\n    unsigned int VBO;\n    glGenBuffers(1, &VBO);\n    glBindBuffer(GL_ARRAY_BUFFER, VBO); \u002F\u002F 绑定VBO\n    glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);\n\n    int nrAttributes;\n    glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &nrAttributes);\n    std::cout \u003C\u003C \"Maximum nr of vertex attributes supported: \" \u003C\u003C nrAttributes \u003C\u003C std::endl;\n\n    \u002F\u002F 位置属性\n    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)0);\n    glEnableVertexAttribArray(0); \u002F\u002F 启用顶点属性\n    \n    \u002F\u002F 法线属性\n    glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(3 * sizeof(float)));\n    glEnableVertexAttribArray(1); \u002F\u002F 启用法线属性\n    \n    \u002F\u002F 纹理坐标属性\n    glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(6 * sizeof(float)));\n    glEnableVertexAttribArray(2); \u002F\u002F 启用纹理坐标属性\n\n    \u002F\u002F 构建并编译着色器程序\n    Shader lightingShader(\"shader\u002Flighting.vert\", \"shader\u002Flighting.frag\");\n    Shader lampShader(\"shader\u002Flamp.vert\", \"shader\u002Flamp.frag\");\n\n    \u002F\u002F 加载纹理\n    unsigned int texture1 = loadTexture(\"Assets\u002Fimage.png\");\n    if (texture1 == 0) {\n        std::cout \u003C\u003C \"Failed to load texture\" \u003C\u003C std::endl;\n    }\n\n    \u002F\u002F 创建光源的 VAO\n    unsigned int lightVAO;\n    glGenVertexArrays(1, &lightVAO);\n    glBindVertexArray(lightVAO);\n    glBindBuffer(GL_ARRAY_BUFFER, VBO);\n    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)0);\n    glEnableVertexAttribArray(0);\n\n    \u002F\u002F 光源位置\n    vec3 lightPos(1.2f, 1.0f, 2.0f);\n    \n    \u002F\u002F 相机位置（观察空间）\n    vec3 viewPos = dpiStabilizer.getCameraPosition();\n\n    \u002F\u002F 渲染循环\n    while (!glfwWindowShouldClose(window)) {\n        \u002F\u002F 处理输入\n        processInput(window);\n        glfwPollEvents();\n\n        \u002F\u002F 从 DPI 稳定器获取 view 矩阵\n        mat4 view = dpiStabilizer.getViewMatrix();\n        \n        float currentFrame = glfwGetTime();\n        deltaTime = currentFrame - lastFrame;\n        lastFrame = currentFrame;\n\n        \u002F\u002F 渲染指令\n        glClearColor(0.2f, 0.3f, 0.3f, 1.0f);\n        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);\n        \n        \u002F\u002F 使用光照着色器绘制物体\n        lightingShader.use();\n        \n        \u002F\u002F 绑定纹理\n        glActiveTexture(GL_TEXTURE0);\n        glBindTexture(GL_TEXTURE_2D, texture1);\n        lightingShader.setInt(\"material.diffuse\", 0);\n        \n        lightingShader.setMat4(\"projection\", projection);\n        lightingShader.setMat4(\"view\", view);\n        lightingShader.setVec3(\"light.direction\", -0.2f, -1.0f, -0.3f);\n        lightingShader.setVec3(\"light.ambient\",  1.0f, 1.0f, 1.0f);   \u002F\u002F 最大环境光强度\n        lightingShader.setVec3(\"light.diffuse\",  1.0f, 1.0f, 1.0f);   \u002F\u002F 增加漫反射强度\n        lightingShader.setVec3(\"light.specular\", 1.0f, 1.0f, 1.0f); \n        lightingShader.setVec3(\"material.specular\", 0.633f, 0.727811f, 0.633f);\n        \u002F\u002F 高光指数：通常乘以 128 (OpenGL 最大的 1.0 对应 128)\n        lightingShader.setFloat(\"material.shininess\", 0.6f * 128.0f); \u002F\u002F 76.8\n        \n        \u002F\u002F 设置相机位置（观察空间）\n        vec3 currentViewPos = dpiStabilizer.getCameraPosition();\n        lightingShader.setVec3(\"viewPos\", currentViewPos.x, currentViewPos.y, currentViewPos.z);\n        \n        glBindVertexArray(VAO);\n        \n        \u002F\u002F 定义多个立方体的位置（更分散的布局）\n        glm::vec3 cubePositions[] = {\n            glm::vec3( 0.0f,  0.0f,  0.0f),\n            glm::vec3( 2.0f,  0.0f,  0.0f),\n            glm::vec3(-2.0f,  0.0f,  0.0f),\n            glm::vec3( 0.0f,  0.0f, -2.0f),\n            glm::vec3( 0.0f,  0.0f,  2.0f),\n            glm::vec3( 2.0f,  0.0f, -2.0f),\n            glm::vec3(-2.0f,  0.0f, -2.0f),\n            glm::vec3( 2.0f,  0.0f,  2.0f),\n            glm::vec3(-2.0f,  0.0f,  2.0f),\n            glm::vec3( 0.0f,  2.0f,  0.0f)\n        };\n        \n        for(unsigned int i = 0; i \u003C 10; i++)\n        {\n            glm::mat4 model = glm::mat4(1.0f);\n            model = glm::translate(model, cubePositions[i]);\n            float angle = 20.0f * i;\n            model = glm::rotate(model, glm::radians(angle), glm::vec3(1.0f, 0.3f, 0.5f));\n            lightingShader.setMat4(\"model\", model);\n\n            glDrawArrays(GL_TRIANGLES, 0, 36);\n        }\n        \n        \u002F\u002F 绘制光源立方体（平行光不需要光源立方体，已注释）\n        \u002F*\n        lampShader.use();\n        lampShader.setMat4(\"projection\", projection);\n        lampShader.setMat4(\"view\", view);\n        \n        \u002F\u002F 光源立方体的模型矩阵\n        mat4 lampModel = mat4(1.0f);\n        lampModel = translate(lampModel, lightPos);\n        lampModel = scale(lampModel, vec3(0.2f)); \u002F\u002F 缩小光源立方体\n        lampShader.setMat4(\"model\", lampModel);\n        \n        glBindVertexArray(lightVAO);\n        glDrawArrays(GL_TRIANGLES, 0, 36);\n        *\u002F\n        \n        \u002F\u002F 使用 ImGui 管理器渲染所有窗口\n        imguiManager.render();\n\n        \u002F\u002F 交换缓冲区和检查IO事件\n        glfwSwapBuffers(window);\n    }\n\n    \u002F\u002F 清理 ImGui 管理器\n    imguiManager.shutdown();\n\n    \u002F\u002F 清理资源\n    glDeleteVertexArrays(1, &VAO);\n    glDeleteVertexArrays(1, &lightVAO);\n    glDeleteBuffers(1, &VBO);\n    glDeleteTextures(1, &texture1);\n    glfwTerminate();\n    return 0;\n}\n\n","c++","",[67,68,69,82,90,98,106,114,122,130,138,146,154,162,170,178,185,202,214,219,226,254,265,286,292,298,316,331,360,368,374,379,385,393,402,407,413,428,433,442,461,470,475,481,490,498,506,514,519,527,533,538,544,581,598,603,608,613,619,642,661,666,672,704,709,715,721,726,732,753,759,771,776,796,812,817,833,847,852,868,882,887,892,898,914,938,943,948,953,964,970,1034,1039,1045,1054,1068,1080,1088,1093,1099,1113,1118,1124,1164,1179,1197,1205,1217,1222,1227,1235,1244,1249,1255,1265,1270,1276,1292,1310,1321,1326,1331,1337,1347,1352,1358,1374,1418,1445,1451,1475,1486,1492,1497,1514,1554,1565,1570,1576,1581,1594,1617,1639,1670,1675,1680,1685,1691,1700,1705,1719,1725,1731,1737,1798,1852,1903,1954,2007,2062,2067,2073,2132,2189,2244,2299,2356,2415,2420,2426,2481,2538,2597,2656,2713,2768,2773,2779,2830,2883,2938,2993,3046,3097,3102,3108,3167,3224,3279,3334,3391,3450,3455,3461,3516,3569,3620,3671,3724,3778,3784,3789,3795,3805,3822,3834,3839,3845,3855,3872,3884,3899,3904,3913,3927,3951,3956,3962,4002,4018,4023,4029,4074,4088,4093,4099,4144,4158,4163,4169,4190,4210,4215,4221,4242,4257,4275,4280,4285,4291,4301,4317,4325,4333,4368,4379,4384,4390,4421,4426,4432,4449,4454,4460,4476,4482,4490,4498,4503,4509,4527,4532,4547,4562,4573,4578,4584,4618,4633,4638,4644,4655,4660,4666,4675,4684,4703,4708,4724,4739,4778,4813,4848,4881,4915,4921,4953,4958,4964,4981,4996,5001,5010,5015,5021,5039,5071,5100,5131,5162,5191,5222,5255,5284,5315,5345,5351,5356,5392,5398,5427,5445,5466,5520,5536,5541,5559,5564,5569,5575,5581,5587,5593,5599,5604,5610,5616,5622,5628,5634,5639,5645,5651,5657,5662,5668,5678,5683,5689,5697,5702,5707,5713,5723,5728,5734,5750,5765,5781,5798,5806,5815],"code",{"__ignoreMap":65},[70,71,74,78],"span",{"class":72,"line":73},"line",1,[70,75,77],{"class":76},"szBVR","#include",[70,79,81],{"class":80},"sZZnC"," \u003Cglad\u002Fglad.h>\n",[70,83,85,87],{"class":72,"line":84},2,[70,86,77],{"class":76},[70,88,89],{"class":80}," \u003CGLFW\u002Fglfw3.h>\n",[70,91,93,95],{"class":72,"line":92},3,[70,94,77],{"class":76},[70,96,97],{"class":80}," \u003Ciostream>\n",[70,99,101,103],{"class":72,"line":100},4,[70,102,77],{"class":76},[70,104,105],{"class":80}," \u003Ccmath>\n",[70,107,109,111],{"class":72,"line":108},5,[70,110,77],{"class":76},[70,112,113],{"class":80}," \u003Cimgui.h>\n",[70,115,117,119],{"class":72,"line":116},6,[70,118,77],{"class":76},[70,120,121],{"class":80}," \u003Cimgui_impl_glfw.h>\n",[70,123,125,127],{"class":72,"line":124},7,[70,126,77],{"class":76},[70,128,129],{"class":80}," \u003Cimgui_impl_opengl3.h>\n",[70,131,133,135],{"class":72,"line":132},8,[70,134,77],{"class":76},[70,136,137],{"class":80}," \u003Copencv2\u002Fopencv.hpp>\n",[70,139,141,143],{"class":72,"line":140},9,[70,142,77],{"class":76},[70,144,145],{"class":80}," \u003Copencv2\u002Fimgcodecs.hpp>\n",[70,147,149,151],{"class":72,"line":148},10,[70,150,77],{"class":76},[70,152,153],{"class":80}," \"utils\u002Fshader.h\"\n",[70,155,157,159],{"class":72,"line":156},11,[70,158,77],{"class":76},[70,160,161],{"class":80}," \"utils\u002FglmCompute.h\"\n",[70,163,165,167],{"class":72,"line":164},12,[70,166,77],{"class":76},[70,168,169],{"class":80}," \"include\u002Fdpi_stabilizer.h\"\n",[70,171,173,175],{"class":72,"line":172},13,[70,174,77],{"class":76},[70,176,177],{"class":80}," \"include\u002Fimgui_manager.h\"\n",[70,179,181],{"class":72,"line":180},14,[70,182,184],{"emptyLinePlaceholder":183},true,"\n",[70,186,188,191,194,198],{"class":72,"line":187},15,[70,189,190],{"class":76},"using",[70,192,193],{"class":76}," namespace",[70,195,197],{"class":196},"sScJk"," glm",[70,199,201],{"class":200},"sVt8B",";\n",[70,203,205,207,209,212],{"class":72,"line":204},16,[70,206,190],{"class":76},[70,208,193],{"class":76},[70,210,211],{"class":196}," cv",[70,213,201],{"class":200},[70,215,217],{"class":72,"line":216},17,[70,218,184],{"emptyLinePlaceholder":183},[70,220,222],{"class":72,"line":221},18,[70,223,225],{"class":224},"sJ8bj","\u002F\u002F 使用 OpenCV 加载纹理\n",[70,227,229,232,235,238,241,244,247,251],{"class":72,"line":228},19,[70,230,231],{"class":76},"unsigned",[70,233,234],{"class":76}," int",[70,236,237],{"class":196}," loadTexture",[70,239,240],{"class":200},"(",[70,242,243],{"class":76},"const",[70,245,246],{"class":76}," char*",[70,248,250],{"class":249},"s4XuR"," path",[70,252,253],{"class":200},") {\n",[70,255,257,260,262],{"class":72,"line":256},20,[70,258,259],{"class":76},"    unsigned",[70,261,234],{"class":76},[70,263,264],{"class":200}," textureID;\n",[70,266,268,271,273,277,280,283],{"class":72,"line":267},21,[70,269,270],{"class":196},"    glGenTextures",[70,272,240],{"class":200},[70,274,276],{"class":275},"sj4cs","1",[70,278,279],{"class":200},", ",[70,281,282],{"class":76},"&",[70,284,285],{"class":200},"textureID);\n",[70,287,289],{"class":72,"line":288},22,[70,290,291],{"class":200},"    \n",[70,293,295],{"class":72,"line":294},23,[70,296,297],{"class":224},"    \u002F\u002F 使用 OpenCV 读取图像\n",[70,299,301,304,307,310,313],{"class":72,"line":300},24,[70,302,303],{"class":196},"    Mat",[70,305,306],{"class":200}," image ",[70,308,309],{"class":76},"=",[70,311,312],{"class":196}," imread",[70,314,315],{"class":200},"(path, IMREAD_COLOR);\n",[70,317,319,322,325,328],{"class":72,"line":318},25,[70,320,321],{"class":76},"    if",[70,323,324],{"class":200}," (image.",[70,326,327],{"class":196},"empty",[70,329,330],{"class":200},"()) {\n",[70,332,334,337,340,343,346,349,352,354,357],{"class":72,"line":333},26,[70,335,336],{"class":196},"        std",[70,338,339],{"class":200},"::cout ",[70,341,342],{"class":76},"\u003C\u003C",[70,344,345],{"class":80}," \"Failed to load texture at path: \"",[70,347,348],{"class":76}," \u003C\u003C",[70,350,351],{"class":200}," path ",[70,353,342],{"class":76},[70,355,356],{"class":196}," std",[70,358,359],{"class":200},"::endl;\n",[70,361,363,366],{"class":72,"line":362},27,[70,364,365],{"class":76},"        return",[70,367,264],{"class":200},[70,369,371],{"class":72,"line":370},28,[70,372,373],{"class":200},"    }\n",[70,375,377],{"class":72,"line":376},29,[70,378,291],{"class":200},[70,380,382],{"class":72,"line":381},30,[70,383,384],{"class":224},"    \u002F\u002F OpenCV 使用 BGR，OpenGL 使用 RGB，需要转换\n",[70,386,388,390],{"class":72,"line":387},31,[70,389,303],{"class":196},[70,391,392],{"class":200}," rgbImage;\n",[70,394,396,399],{"class":72,"line":395},32,[70,397,398],{"class":196},"    cvtColor",[70,400,401],{"class":200},"(image, rgbImage, COLOR_BGR2RGB);\n",[70,403,405],{"class":72,"line":404},33,[70,406,291],{"class":200},[70,408,410],{"class":72,"line":409},34,[70,411,412],{"class":224},"    \u002F\u002F 翻转图像（OpenGL 期望的 Y 轴方向）\n",[70,414,416,419,422,425],{"class":72,"line":415},35,[70,417,418],{"class":196},"    flip",[70,420,421],{"class":200},"(rgbImage, rgbImage, ",[70,423,424],{"class":275},"0",[70,426,427],{"class":200},");\n",[70,429,431],{"class":72,"line":430},36,[70,432,291],{"class":200},[70,434,436,439],{"class":72,"line":435},37,[70,437,438],{"class":196},"    glBindTexture",[70,440,441],{"class":200},"(GL_TEXTURE_2D, textureID);\n",[70,443,445,448,451,453,456,458],{"class":72,"line":444},38,[70,446,447],{"class":196},"    glTexImage2D",[70,449,450],{"class":200},"(GL_TEXTURE_2D, ",[70,452,424],{"class":275},[70,454,455],{"class":200},", GL_RGB, rgbImage.cols, rgbImage.rows, ",[70,457,424],{"class":275},[70,459,460],{"class":200},", GL_RGB, GL_UNSIGNED_BYTE, rgbImage.data);\n",[70,462,464,467],{"class":72,"line":463},39,[70,465,466],{"class":196},"    glGenerateMipmap",[70,468,469],{"class":200},"(GL_TEXTURE_2D);\n",[70,471,473],{"class":72,"line":472},40,[70,474,291],{"class":200},[70,476,478],{"class":72,"line":477},41,[70,479,480],{"class":224},"    \u002F\u002F 设置纹理参数\n",[70,482,484,487],{"class":72,"line":483},42,[70,485,486],{"class":196},"    glTexParameteri",[70,488,489],{"class":200},"(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);\n",[70,491,493,495],{"class":72,"line":492},43,[70,494,486],{"class":196},[70,496,497],{"class":200},"(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);\n",[70,499,501,503],{"class":72,"line":500},44,[70,502,486],{"class":196},[70,504,505],{"class":200},"(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);\n",[70,507,509,511],{"class":72,"line":508},45,[70,510,486],{"class":196},[70,512,513],{"class":200},"(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);\n",[70,515,517],{"class":72,"line":516},46,[70,518,291],{"class":200},[70,520,522,525],{"class":72,"line":521},47,[70,523,524],{"class":76},"    return",[70,526,264],{"class":200},[70,528,530],{"class":72,"line":529},48,[70,531,532],{"class":200},"}\n",[70,534,536],{"class":72,"line":535},49,[70,537,184],{"emptyLinePlaceholder":183},[70,539,541],{"class":72,"line":540},50,[70,542,543],{"class":224},"\u002F\u002F 窗口大小改变时的回调函数\n",[70,545,547,550,553,555,558,561,564,566,569,572,574,576,579],{"class":72,"line":546},51,[70,548,549],{"class":76},"void",[70,551,552],{"class":196}," framebuffer_size_callback",[70,554,240],{"class":200},[70,556,557],{"class":196},"GLFWwindow",[70,559,560],{"class":76},"*",[70,562,563],{"class":249}," window",[70,565,279],{"class":200},[70,567,568],{"class":76},"int",[70,570,571],{"class":249}," width",[70,573,279],{"class":200},[70,575,568],{"class":76},[70,577,578],{"class":249}," height",[70,580,253],{"class":200},[70,582,584,587,589,591,593,595],{"class":72,"line":583},52,[70,585,586],{"class":196},"    glViewport",[70,588,240],{"class":200},[70,590,424],{"class":275},[70,592,279],{"class":200},[70,594,424],{"class":275},[70,596,597],{"class":200},", width, height);\n",[70,599,601],{"class":72,"line":600},53,[70,602,532],{"class":200},[70,604,606],{"class":72,"line":605},54,[70,607,184],{"emptyLinePlaceholder":183},[70,609,611],{"class":72,"line":610},55,[70,612,184],{"emptyLinePlaceholder":183},[70,614,616],{"class":72,"line":615},56,[70,617,618],{"class":224},"\u002F\u002F 全局变量\n",[70,620,622,625,628,630,633,636,639],{"class":72,"line":621},57,[70,623,624],{"class":76},"float",[70,626,627],{"class":200}," deltaTime ",[70,629,309],{"class":76},[70,631,632],{"class":275}," 0.0",[70,634,635],{"class":76},"f",[70,637,638],{"class":200},";",[70,640,641],{"class":224}," \u002F\u002F 当前帧与上一帧的时间差\n",[70,643,645,647,650,652,654,656,658],{"class":72,"line":644},58,[70,646,624],{"class":76},[70,648,649],{"class":200}," lastFrame ",[70,651,309],{"class":76},[70,653,632],{"class":275},[70,655,635],{"class":76},[70,657,638],{"class":200},[70,659,660],{"class":224}," \u002F\u002F 上一帧的时间\n",[70,662,664],{"class":72,"line":663},59,[70,665,184],{"emptyLinePlaceholder":183},[70,667,669],{"class":72,"line":668},60,[70,670,671],{"class":224},"\u002F\u002F DPI 稳定器实例\n",[70,673,675,678,681,683,686,688,690,693,695,697,700,702],{"class":72,"line":674},61,[70,676,677],{"class":196},"DPIStabilizer",[70,679,680],{"class":196}," dpiStabilizer",[70,682,240],{"class":200},[70,684,685],{"class":275},"0.1",[70,687,635],{"class":76},[70,689,279],{"class":200},[70,691,692],{"class":275},"50.0",[70,694,635],{"class":76},[70,696,279],{"class":200},[70,698,699],{"class":275},"0.8",[70,701,635],{"class":76},[70,703,427],{"class":200},[70,705,707],{"class":72,"line":706},62,[70,708,184],{"emptyLinePlaceholder":183},[70,710,712],{"class":72,"line":711},63,[70,713,714],{"class":224},"\u002F\u002F ImGui 管理器实例\n",[70,716,718],{"class":72,"line":717},64,[70,719,720],{"class":200},"ImGuiManager imguiManager;\n",[70,722,724],{"class":72,"line":723},65,[70,725,184],{"emptyLinePlaceholder":183},[70,727,729],{"class":72,"line":728},66,[70,730,731],{"class":224},"\u002F\u002F 简化的输入处理函数\n",[70,733,735,737,740,742,744,747,750],{"class":72,"line":734},67,[70,736,549],{"class":76},[70,738,739],{"class":196}," processInput",[70,741,240],{"class":200},[70,743,557],{"class":196},[70,745,746],{"class":76}," *",[70,748,749],{"class":249},"window",[70,751,752],{"class":200},"){\n",[70,754,756],{"class":72,"line":755},68,[70,757,758],{"class":224},"    \u002F\u002F 使用 DPI 稳定器处理所有输入\n",[70,760,762,765,768],{"class":72,"line":761},69,[70,763,764],{"class":200},"    dpiStabilizer.",[70,766,767],{"class":196},"processKeyboardInput",[70,769,770],{"class":200},"(window);\n",[70,772,774],{"class":72,"line":773},70,[70,775,184],{"emptyLinePlaceholder":183},[70,777,779,781,784,787,790,793],{"class":72,"line":778},71,[70,780,321],{"class":76},[70,782,783],{"class":200}," (",[70,785,786],{"class":196},"glfwGetKey",[70,788,789],{"class":200},"(window, GLFW_KEY_F2) ",[70,791,792],{"class":76},"==",[70,794,795],{"class":200}," GLFW_PRESS) {\n",[70,797,799,802,805,807,810],{"class":72,"line":798},72,[70,800,801],{"class":200},"        imguiManager.",[70,803,804],{"class":196},"toggleWindow",[70,806,240],{"class":200},[70,808,809],{"class":80},"\"控制面板\"",[70,811,427],{"class":200},[70,813,815],{"class":72,"line":814},73,[70,816,373],{"class":200},[70,818,820,822,824,826,829,831],{"class":72,"line":819},74,[70,821,321],{"class":76},[70,823,783],{"class":200},[70,825,786],{"class":196},[70,827,828],{"class":200},"(window, GLFW_KEY_F3) ",[70,830,792],{"class":76},[70,832,795],{"class":200},[70,834,836,838,840,842,845],{"class":72,"line":835},75,[70,837,801],{"class":200},[70,839,804],{"class":196},[70,841,240],{"class":200},[70,843,844],{"class":80},"\"性能监控\"",[70,846,427],{"class":200},[70,848,850],{"class":72,"line":849},76,[70,851,373],{"class":200},[70,853,855,857,859,861,864,866],{"class":72,"line":854},77,[70,856,321],{"class":76},[70,858,783],{"class":200},[70,860,786],{"class":196},[70,862,863],{"class":200},"(window, GLFW_KEY_F4) ",[70,865,792],{"class":76},[70,867,795],{"class":200},[70,869,871,873,875,877,880],{"class":72,"line":870},78,[70,872,801],{"class":200},[70,874,804],{"class":196},[70,876,240],{"class":200},[70,878,879],{"class":80},"\"调试信息\"",[70,881,427],{"class":200},[70,883,885],{"class":72,"line":884},79,[70,886,373],{"class":200},[70,888,890],{"class":72,"line":889},80,[70,891,291],{"class":200},[70,893,895],{"class":72,"line":894},81,[70,896,897],{"class":224},"    \u002F\u002F 显示统计信息 (按 T 键)\n",[70,899,901,903,905,907,910,912],{"class":72,"line":900},82,[70,902,321],{"class":76},[70,904,783],{"class":200},[70,906,786],{"class":196},[70,908,909],{"class":200},"(window, GLFW_KEY_T) ",[70,911,792],{"class":76},[70,913,795],{"class":200},[70,915,917,919,921,923,926,929,932,934,936],{"class":72,"line":916},83,[70,918,336],{"class":196},[70,920,339],{"class":200},[70,922,342],{"class":76},[70,924,925],{"class":200}," dpiStabilizer.",[70,927,928],{"class":196},"getStats",[70,930,931],{"class":200},"() ",[70,933,342],{"class":76},[70,935,356],{"class":196},[70,937,359],{"class":200},[70,939,941],{"class":72,"line":940},84,[70,942,373],{"class":200},[70,944,946],{"class":72,"line":945},85,[70,947,532],{"class":200},[70,949,951],{"class":72,"line":950},86,[70,952,184],{"emptyLinePlaceholder":183},[70,954,956,958,961],{"class":72,"line":955},87,[70,957,568],{"class":76},[70,959,960],{"class":196}," main",[70,962,963],{"class":200},"() {\n",[70,965,967],{"class":72,"line":966},88,[70,968,969],{"class":224},"    \u002F\u002F 投影矩阵\n",[70,971,973,976,979,981,984,986,989,991,994,996,999,1001,1004,1007,1010,1012,1014,1016,1019,1021,1023,1025,1027,1030,1032],{"class":72,"line":972},89,[70,974,975],{"class":196},"    mat4",[70,977,978],{"class":200}," projection ",[70,980,309],{"class":76},[70,982,983],{"class":196}," perspective",[70,985,240],{"class":200},[70,987,988],{"class":196},"radians",[70,990,240],{"class":200},[70,992,993],{"class":275},"45.0",[70,995,635],{"class":76},[70,997,998],{"class":200},"), (",[70,1000,624],{"class":76},[70,1002,1003],{"class":200},")",[70,1005,1006],{"class":275},"800",[70,1008,1009],{"class":76}," \u002F",[70,1011,783],{"class":200},[70,1013,624],{"class":76},[70,1015,1003],{"class":200},[70,1017,1018],{"class":275},"600",[70,1020,279],{"class":200},[70,1022,685],{"class":275},[70,1024,635],{"class":76},[70,1026,279],{"class":200},[70,1028,1029],{"class":275},"100.0",[70,1031,635],{"class":76},[70,1033,427],{"class":200},[70,1035,1037],{"class":72,"line":1036},90,[70,1038,184],{"emptyLinePlaceholder":183},[70,1040,1042],{"class":72,"line":1041},91,[70,1043,1044],{"class":224},"    \u002F\u002F 初始化GLFW\n",[70,1046,1048,1051],{"class":72,"line":1047},92,[70,1049,1050],{"class":196},"    glfwInit",[70,1052,1053],{"class":200},"();\n",[70,1055,1057,1060,1063,1066],{"class":72,"line":1056},93,[70,1058,1059],{"class":196},"    glfwWindowHint",[70,1061,1062],{"class":200},"(GLFW_CONTEXT_VERSION_MAJOR, ",[70,1064,1065],{"class":275},"3",[70,1067,427],{"class":200},[70,1069,1071,1073,1076,1078],{"class":72,"line":1070},94,[70,1072,1059],{"class":196},[70,1074,1075],{"class":200},"(GLFW_CONTEXT_VERSION_MINOR, ",[70,1077,1065],{"class":275},[70,1079,427],{"class":200},[70,1081,1083,1085],{"class":72,"line":1082},95,[70,1084,1059],{"class":196},[70,1086,1087],{"class":200},"(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);\n",[70,1089,1091],{"class":72,"line":1090},96,[70,1092,291],{"class":200},[70,1094,1096],{"class":72,"line":1095},97,[70,1097,1098],{"class":224},"    \u002F\u002F 设置 DPI 感知提示\n",[70,1100,1102,1105,1108,1111],{"class":72,"line":1101},98,[70,1103,1104],{"class":196},"    DPIStabilizer",[70,1106,1107],{"class":200},"::",[70,1109,1110],{"class":196},"setDPIHint",[70,1112,1053],{"class":200},[70,1114,1116],{"class":72,"line":1115},99,[70,1117,184],{"emptyLinePlaceholder":183},[70,1119,1121],{"class":72,"line":1120},100,[70,1122,1123],{"class":224},"    \u002F\u002F 创建窗口\n",[70,1125,1127,1130,1132,1135,1137,1140,1142,1144,1146,1148,1150,1153,1155,1158,1160,1162],{"class":72,"line":1126},101,[70,1128,1129],{"class":196},"    GLFWwindow",[70,1131,560],{"class":76},[70,1133,1134],{"class":200}," window ",[70,1136,309],{"class":76},[70,1138,1139],{"class":196}," glfwCreateWindow",[70,1141,240],{"class":200},[70,1143,1006],{"class":275},[70,1145,279],{"class":200},[70,1147,1018],{"class":275},[70,1149,279],{"class":200},[70,1151,1152],{"class":80},"\"OpenGL Window\"",[70,1154,279],{"class":200},[70,1156,1157],{"class":275},"NULL",[70,1159,279],{"class":200},[70,1161,1157],{"class":275},[70,1163,427],{"class":200},[70,1165,1167,1169,1172,1174,1177],{"class":72,"line":1166},102,[70,1168,321],{"class":76},[70,1170,1171],{"class":200}," (window ",[70,1173,792],{"class":76},[70,1175,1176],{"class":275}," NULL",[70,1178,253],{"class":200},[70,1180,1182,1184,1186,1188,1191,1193,1195],{"class":72,"line":1181},103,[70,1183,336],{"class":196},[70,1185,339],{"class":200},[70,1187,342],{"class":76},[70,1189,1190],{"class":80}," \"Failed to create GLFW window\"",[70,1192,348],{"class":76},[70,1194,356],{"class":196},[70,1196,359],{"class":200},[70,1198,1200,1203],{"class":72,"line":1199},104,[70,1201,1202],{"class":196},"        glfwTerminate",[70,1204,1053],{"class":200},[70,1206,1208,1210,1213,1215],{"class":72,"line":1207},105,[70,1209,365],{"class":76},[70,1211,1212],{"class":76}," -",[70,1214,276],{"class":275},[70,1216,201],{"class":200},[70,1218,1220],{"class":72,"line":1219},106,[70,1221,373],{"class":200},[70,1223,1225],{"class":72,"line":1224},107,[70,1226,184],{"emptyLinePlaceholder":183},[70,1228,1230,1233],{"class":72,"line":1229},108,[70,1231,1232],{"class":196},"    glfwMakeContextCurrent",[70,1234,770],{"class":200},[70,1236,1238,1241],{"class":72,"line":1237},109,[70,1239,1240],{"class":196},"    glfwSetFramebufferSizeCallback",[70,1242,1243],{"class":200},"(window, framebuffer_size_callback);\n",[70,1245,1247],{"class":72,"line":1246},110,[70,1248,291],{"class":200},[70,1250,1252],{"class":72,"line":1251},111,[70,1253,1254],{"class":224},"    \u002F\u002F 初始化 DPI 稳定器\n",[70,1256,1258,1260,1263],{"class":72,"line":1257},112,[70,1259,764],{"class":200},[70,1261,1262],{"class":196},"initialize",[70,1264,770],{"class":200},[70,1266,1268],{"class":72,"line":1267},113,[70,1269,184],{"emptyLinePlaceholder":183},[70,1271,1273],{"class":72,"line":1272},114,[70,1274,1275],{"class":224},"    \u002F\u002F 初始化GLAD\n",[70,1277,1279,1281,1283,1286,1289],{"class":72,"line":1278},115,[70,1280,321],{"class":76},[70,1282,783],{"class":200},[70,1284,1285],{"class":76},"!",[70,1287,1288],{"class":196},"gladLoadGLLoader",[70,1290,1291],{"class":200},"((GLADloadproc)glfwGetProcAddress)) {\n",[70,1293,1295,1297,1299,1301,1304,1306,1308],{"class":72,"line":1294},116,[70,1296,336],{"class":196},[70,1298,339],{"class":200},[70,1300,342],{"class":76},[70,1302,1303],{"class":80}," \"Failed to initialize GLAD\"",[70,1305,348],{"class":76},[70,1307,356],{"class":196},[70,1309,359],{"class":200},[70,1311,1313,1315,1317,1319],{"class":72,"line":1312},117,[70,1314,365],{"class":76},[70,1316,1212],{"class":76},[70,1318,276],{"class":275},[70,1320,201],{"class":200},[70,1322,1324],{"class":72,"line":1323},118,[70,1325,373],{"class":200},[70,1327,1329],{"class":72,"line":1328},119,[70,1330,184],{"emptyLinePlaceholder":183},[70,1332,1334],{"class":72,"line":1333},120,[70,1335,1336],{"class":224},"    \u002F\u002F 初始化 ImGui 管理器\n",[70,1338,1340,1343,1345],{"class":72,"line":1339},121,[70,1341,1342],{"class":200},"    imguiManager.",[70,1344,1262],{"class":196},[70,1346,770],{"class":200},[70,1348,1350],{"class":72,"line":1349},122,[70,1351,291],{"class":200},[70,1353,1355],{"class":72,"line":1354},123,[70,1356,1357],{"class":224},"    \u002F\u002F 注册窗口\n",[70,1359,1361,1363,1366,1368,1371],{"class":72,"line":1360},124,[70,1362,1342],{"class":200},[70,1364,1365],{"class":196},"registerWindow",[70,1367,240],{"class":200},[70,1369,1370],{"class":80},"\"Hello ImGui!\"",[70,1372,1373],{"class":200},", []() {\n",[70,1375,1377,1380,1382,1385,1387,1390,1393,1396,1399,1402,1404,1407,1410,1413,1416],{"class":72,"line":1376},125,[70,1378,1379],{"class":196},"        ImGui",[70,1381,1107],{"class":200},[70,1383,1384],{"class":196},"Text",[70,1386,240],{"class":200},[70,1388,1389],{"class":80},"\"DPI 稳定器状态: ",[70,1391,1392],{"class":275},"%s",[70,1394,1395],{"class":80},"\"",[70,1397,1398],{"class":200},", dpiStabilizer.",[70,1400,1401],{"class":196},"isMouseCaptured",[70,1403,931],{"class":200},[70,1405,1406],{"class":76},"?",[70,1408,1409],{"class":80}," \"已捕获\"",[70,1411,1412],{"class":76}," :",[70,1414,1415],{"class":80}," \"已释放\"",[70,1417,427],{"class":200},[70,1419,1421,1423,1425,1427,1429,1432,1435,1437,1439,1442],{"class":72,"line":1420},126,[70,1422,1379],{"class":196},[70,1424,1107],{"class":200},[70,1426,1384],{"class":196},[70,1428,240],{"class":200},[70,1430,1431],{"class":80},"\"鼠标敏感度: ",[70,1433,1434],{"class":275},"%.3f",[70,1436,1395],{"class":80},[70,1438,1398],{"class":200},[70,1440,1441],{"class":196},"getSensitivity",[70,1443,1444],{"class":200},"());\n",[70,1446,1448],{"class":72,"line":1447},127,[70,1449,1450],{"class":200},"        \n",[70,1452,1454,1457,1459,1462,1464,1467,1469,1472],{"class":72,"line":1453},128,[70,1455,1456],{"class":76},"        if",[70,1458,783],{"class":200},[70,1460,1461],{"class":196},"ImGui",[70,1463,1107],{"class":200},[70,1465,1466],{"class":196},"Button",[70,1468,240],{"class":200},[70,1470,1471],{"class":80},"\"重置统计\"",[70,1473,1474],{"class":200},")) {\n",[70,1476,1478,1481,1484],{"class":72,"line":1477},129,[70,1479,1480],{"class":200},"            dpiStabilizer.",[70,1482,1483],{"class":196},"resetStats",[70,1485,1053],{"class":200},[70,1487,1489],{"class":72,"line":1488},130,[70,1490,1491],{"class":200},"        }\n",[70,1493,1495],{"class":72,"line":1494},131,[70,1496,1450],{"class":200},[70,1498,1500,1503,1506,1508,1510,1512],{"class":72,"line":1499},132,[70,1501,1502],{"class":76},"        float",[70,1504,1505],{"class":200}," sensitivity ",[70,1507,309],{"class":76},[70,1509,925],{"class":200},[70,1511,1441],{"class":196},[70,1513,1053],{"class":200},[70,1515,1517,1519,1521,1523,1525,1528,1530,1533,1535,1537,1540,1543,1545,1547,1550,1552],{"class":72,"line":1516},133,[70,1518,1456],{"class":76},[70,1520,783],{"class":200},[70,1522,1461],{"class":196},[70,1524,1107],{"class":200},[70,1526,1527],{"class":196},"SliderFloat",[70,1529,240],{"class":200},[70,1531,1532],{"class":80},"\"鼠标敏感度\"",[70,1534,279],{"class":200},[70,1536,282],{"class":76},[70,1538,1539],{"class":200},"sensitivity, ",[70,1541,1542],{"class":275},"0.01",[70,1544,635],{"class":76},[70,1546,279],{"class":200},[70,1548,1549],{"class":275},"0.5",[70,1551,635],{"class":76},[70,1553,1474],{"class":200},[70,1555,1557,1559,1562],{"class":72,"line":1556},134,[70,1558,1480],{"class":200},[70,1560,1561],{"class":196},"setSensitivity",[70,1563,1564],{"class":200},"(sensitivity);\n",[70,1566,1568],{"class":72,"line":1567},135,[70,1569,1491],{"class":200},[70,1571,1573],{"class":72,"line":1572},136,[70,1574,1575],{"class":200},"    });\n",[70,1577,1579],{"class":72,"line":1578},137,[70,1580,291],{"class":200},[70,1582,1584,1586,1588,1590,1592],{"class":72,"line":1583},138,[70,1585,1342],{"class":200},[70,1587,1365],{"class":196},[70,1589,240],{"class":200},[70,1591,809],{"class":80},[70,1593,1373],{"class":200},[70,1595,1597,1600,1602,1605,1607,1610,1612,1615],{"class":72,"line":1596},139,[70,1598,1599],{"class":196},"        ImGuiIO",[70,1601,282],{"class":76},[70,1603,1604],{"class":200}," io ",[70,1606,309],{"class":76},[70,1608,1609],{"class":196}," ImGui",[70,1611,1107],{"class":200},[70,1613,1614],{"class":196},"GetIO",[70,1616,1053],{"class":200},[70,1618,1620,1622,1624,1626,1628,1631,1634,1636],{"class":72,"line":1619},140,[70,1621,1379],{"class":196},[70,1623,1107],{"class":200},[70,1625,1384],{"class":196},[70,1627,240],{"class":200},[70,1629,1630],{"class":80},"\"FPS: ",[70,1632,1633],{"class":275},"%.1f",[70,1635,1395],{"class":80},[70,1637,1638],{"class":200},", io.Framerate);\n",[70,1640,1642,1644,1646,1648,1650,1653,1655,1658,1660,1663,1665,1667],{"class":72,"line":1641},141,[70,1643,1379],{"class":196},[70,1645,1107],{"class":200},[70,1647,1384],{"class":196},[70,1649,240],{"class":200},[70,1651,1652],{"class":80},"\"帧时间: ",[70,1654,1434],{"class":275},[70,1656,1657],{"class":80}," ms\"",[70,1659,279],{"class":200},[70,1661,1662],{"class":275},"1000.0",[70,1664,635],{"class":76},[70,1666,1009],{"class":76},[70,1668,1669],{"class":200}," io.Framerate);\n",[70,1671,1673],{"class":72,"line":1672},142,[70,1674,1575],{"class":200},[70,1676,1678],{"class":72,"line":1677},143,[70,1679,291],{"class":200},[70,1681,1683],{"class":72,"line":1682},144,[70,1684,184],{"emptyLinePlaceholder":183},[70,1686,1688],{"class":72,"line":1687},145,[70,1689,1690],{"class":224},"    \u002F\u002F 启用深度测试\n",[70,1692,1694,1697],{"class":72,"line":1693},146,[70,1695,1696],{"class":196},"    glEnable",[70,1698,1699],{"class":200},"(GL_DEPTH_TEST);\n",[70,1701,1703],{"class":72,"line":1702},147,[70,1704,184],{"emptyLinePlaceholder":183},[70,1706,1708,1711,1714,1716],{"class":72,"line":1707},148,[70,1709,1710],{"class":76},"    float",[70,1712,1713],{"class":200}," vertices[] ",[70,1715,309],{"class":76},[70,1717,1718],{"class":200}," {\n",[70,1720,1722],{"class":72,"line":1721},149,[70,1723,1724],{"class":224},"    \u002F\u002F 立方体顶点数据（位置 + 法线 + 纹理坐标）\n",[70,1726,1728],{"class":72,"line":1727},150,[70,1729,1730],{"class":224},"    \u002F\u002F 位置(3) + 法线(3) + 纹理坐标(2) = 8个浮点数\n",[70,1732,1734],{"class":72,"line":1733},151,[70,1735,1736],{"class":224},"    \u002F\u002F 前面\n",[70,1738,1740,1743,1745,1747,1749,1752,1754,1756,1759,1761,1763,1765,1768,1770,1772,1774,1776,1778,1781,1783,1785,1787,1789,1791,1793,1795],{"class":72,"line":1739},152,[70,1741,1742],{"class":76},"    -",[70,1744,1549],{"class":275},[70,1746,635],{"class":76},[70,1748,279],{"class":200},[70,1750,1751],{"class":76},"-",[70,1753,1549],{"class":275},[70,1755,635],{"class":76},[70,1757,1758],{"class":200},",  ",[70,1760,1549],{"class":275},[70,1762,635],{"class":76},[70,1764,1758],{"class":200},[70,1766,1767],{"class":275},"0.0",[70,1769,635],{"class":76},[70,1771,1758],{"class":200},[70,1773,1767],{"class":275},[70,1775,635],{"class":76},[70,1777,1758],{"class":200},[70,1779,1780],{"class":275},"1.0",[70,1782,635],{"class":76},[70,1784,1758],{"class":200},[70,1786,1767],{"class":275},[70,1788,635],{"class":76},[70,1790,279],{"class":200},[70,1792,1767],{"class":275},[70,1794,635],{"class":76},[70,1796,1797],{"class":200},",\n",[70,1799,1801,1804,1806,1808,1810,1812,1814,1816,1818,1820,1822,1824,1826,1828,1830,1832,1834,1836,1838,1840,1842,1844,1846,1848,1850],{"class":72,"line":1800},153,[70,1802,1803],{"class":275},"     0.5",[70,1805,635],{"class":76},[70,1807,279],{"class":200},[70,1809,1751],{"class":76},[70,1811,1549],{"class":275},[70,1813,635],{"class":76},[70,1815,1758],{"class":200},[70,1817,1549],{"class":275},[70,1819,635],{"class":76},[70,1821,1758],{"class":200},[70,1823,1767],{"class":275},[70,1825,635],{"class":76},[70,1827,1758],{"class":200},[70,1829,1767],{"class":275},[70,1831,635],{"class":76},[70,1833,1758],{"class":200},[70,1835,1780],{"class":275},[70,1837,635],{"class":76},[70,1839,1758],{"class":200},[70,1841,1780],{"class":275},[70,1843,635],{"class":76},[70,1845,279],{"class":200},[70,1847,1767],{"class":275},[70,1849,635],{"class":76},[70,1851,1797],{"class":200},[70,1853,1855,1857,1859,1861,1863,1865,1867,1869,1871,1873,1875,1877,1879,1881,1883,1885,1887,1889,1891,1893,1895,1897,1899,1901],{"class":72,"line":1854},154,[70,1856,1803],{"class":275},[70,1858,635],{"class":76},[70,1860,1758],{"class":200},[70,1862,1549],{"class":275},[70,1864,635],{"class":76},[70,1866,1758],{"class":200},[70,1868,1549],{"class":275},[70,1870,635],{"class":76},[70,1872,1758],{"class":200},[70,1874,1767],{"class":275},[70,1876,635],{"class":76},[70,1878,1758],{"class":200},[70,1880,1767],{"class":275},[70,1882,635],{"class":76},[70,1884,1758],{"class":200},[70,1886,1780],{"class":275},[70,1888,635],{"class":76},[70,1890,1758],{"class":200},[70,1892,1780],{"class":275},[70,1894,635],{"class":76},[70,1896,279],{"class":200},[70,1898,1780],{"class":275},[70,1900,635],{"class":76},[70,1902,1797],{"class":200},[70,1904,1906,1908,1910,1912,1914,1916,1918,1920,1922,1924,1926,1928,1930,1932,1934,1936,1938,1940,1942,1944,1946,1948,1950,1952],{"class":72,"line":1905},155,[70,1907,1803],{"class":275},[70,1909,635],{"class":76},[70,1911,1758],{"class":200},[70,1913,1549],{"class":275},[70,1915,635],{"class":76},[70,1917,1758],{"class":200},[70,1919,1549],{"class":275},[70,1921,635],{"class":76},[70,1923,1758],{"class":200},[70,1925,1767],{"class":275},[70,1927,635],{"class":76},[70,1929,1758],{"class":200},[70,1931,1767],{"class":275},[70,1933,635],{"class":76},[70,1935,1758],{"class":200},[70,1937,1780],{"class":275},[70,1939,635],{"class":76},[70,1941,1758],{"class":200},[70,1943,1780],{"class":275},[70,1945,635],{"class":76},[70,1947,279],{"class":200},[70,1949,1780],{"class":275},[70,1951,635],{"class":76},[70,1953,1797],{"class":200},[70,1955,1957,1959,1961,1963,1965,1967,1969,1971,1973,1975,1977,1979,1981,1983,1985,1987,1989,1991,1993,1995,1997,1999,2001,2003,2005],{"class":72,"line":1956},156,[70,1958,1742],{"class":76},[70,1960,1549],{"class":275},[70,1962,635],{"class":76},[70,1964,1758],{"class":200},[70,1966,1549],{"class":275},[70,1968,635],{"class":76},[70,1970,1758],{"class":200},[70,1972,1549],{"class":275},[70,1974,635],{"class":76},[70,1976,1758],{"class":200},[70,1978,1767],{"class":275},[70,1980,635],{"class":76},[70,1982,1758],{"class":200},[70,1984,1767],{"class":275},[70,1986,635],{"class":76},[70,1988,1758],{"class":200},[70,1990,1780],{"class":275},[70,1992,635],{"class":76},[70,1994,1758],{"class":200},[70,1996,1767],{"class":275},[70,1998,635],{"class":76},[70,2000,279],{"class":200},[70,2002,1780],{"class":275},[70,2004,635],{"class":76},[70,2006,1797],{"class":200},[70,2008,2010,2012,2014,2016,2018,2020,2022,2024,2026,2028,2030,2032,2034,2036,2038,2040,2042,2044,2046,2048,2050,2052,2054,2056,2058,2060],{"class":72,"line":2009},157,[70,2011,1742],{"class":76},[70,2013,1549],{"class":275},[70,2015,635],{"class":76},[70,2017,279],{"class":200},[70,2019,1751],{"class":76},[70,2021,1549],{"class":275},[70,2023,635],{"class":76},[70,2025,1758],{"class":200},[70,2027,1549],{"class":275},[70,2029,635],{"class":76},[70,2031,1758],{"class":200},[70,2033,1767],{"class":275},[70,2035,635],{"class":76},[70,2037,1758],{"class":200},[70,2039,1767],{"class":275},[70,2041,635],{"class":76},[70,2043,1758],{"class":200},[70,2045,1780],{"class":275},[70,2047,635],{"class":76},[70,2049,1758],{"class":200},[70,2051,1767],{"class":275},[70,2053,635],{"class":76},[70,2055,279],{"class":200},[70,2057,1767],{"class":275},[70,2059,635],{"class":76},[70,2061,1797],{"class":200},[70,2063,2065],{"class":72,"line":2064},158,[70,2066,291],{"class":200},[70,2068,2070],{"class":72,"line":2069},159,[70,2071,2072],{"class":224},"    \u002F\u002F 后面\n",[70,2074,2076,2078,2080,2082,2084,2086,2088,2090,2092,2094,2096,2098,2100,2102,2104,2106,2108,2110,2112,2114,2116,2118,2120,2122,2124,2126,2128,2130],{"class":72,"line":2075},160,[70,2077,1742],{"class":76},[70,2079,1549],{"class":275},[70,2081,635],{"class":76},[70,2083,279],{"class":200},[70,2085,1751],{"class":76},[70,2087,1549],{"class":275},[70,2089,635],{"class":76},[70,2091,279],{"class":200},[70,2093,1751],{"class":76},[70,2095,1549],{"class":275},[70,2097,635],{"class":76},[70,2099,1758],{"class":200},[70,2101,1767],{"class":275},[70,2103,635],{"class":76},[70,2105,1758],{"class":200},[70,2107,1767],{"class":275},[70,2109,635],{"class":76},[70,2111,279],{"class":200},[70,2113,1751],{"class":76},[70,2115,1780],{"class":275},[70,2117,635],{"class":76},[70,2119,1758],{"class":200},[70,2121,1767],{"class":275},[70,2123,635],{"class":76},[70,2125,279],{"class":200},[70,2127,1767],{"class":275},[70,2129,635],{"class":76},[70,2131,1797],{"class":200},[70,2133,2135,2137,2139,2141,2143,2145,2147,2149,2151,2153,2155,2157,2159,2161,2163,2165,2167,2169,2171,2173,2175,2177,2179,2181,2183,2185,2187],{"class":72,"line":2134},161,[70,2136,1803],{"class":275},[70,2138,635],{"class":76},[70,2140,279],{"class":200},[70,2142,1751],{"class":76},[70,2144,1549],{"class":275},[70,2146,635],{"class":76},[70,2148,279],{"class":200},[70,2150,1751],{"class":76},[70,2152,1549],{"class":275},[70,2154,635],{"class":76},[70,2156,1758],{"class":200},[70,2158,1767],{"class":275},[70,2160,635],{"class":76},[70,2162,1758],{"class":200},[70,2164,1767],{"class":275},[70,2166,635],{"class":76},[70,2168,279],{"class":200},[70,2170,1751],{"class":76},[70,2172,1780],{"class":275},[70,2174,635],{"class":76},[70,2176,1758],{"class":200},[70,2178,1780],{"class":275},[70,2180,635],{"class":76},[70,2182,279],{"class":200},[70,2184,1767],{"class":275},[70,2186,635],{"class":76},[70,2188,1797],{"class":200},[70,2190,2192,2194,2196,2198,2200,2202,2204,2206,2208,2210,2212,2214,2216,2218,2220,2222,2224,2226,2228,2230,2232,2234,2236,2238,2240,2242],{"class":72,"line":2191},162,[70,2193,1803],{"class":275},[70,2195,635],{"class":76},[70,2197,1758],{"class":200},[70,2199,1549],{"class":275},[70,2201,635],{"class":76},[70,2203,279],{"class":200},[70,2205,1751],{"class":76},[70,2207,1549],{"class":275},[70,2209,635],{"class":76},[70,2211,1758],{"class":200},[70,2213,1767],{"class":275},[70,2215,635],{"class":76},[70,2217,1758],{"class":200},[70,2219,1767],{"class":275},[70,2221,635],{"class":76},[70,2223,279],{"class":200},[70,2225,1751],{"class":76},[70,2227,1780],{"class":275},[70,2229,635],{"class":76},[70,2231,1758],{"class":200},[70,2233,1780],{"class":275},[70,2235,635],{"class":76},[70,2237,279],{"class":200},[70,2239,1780],{"class":275},[70,2241,635],{"class":76},[70,2243,1797],{"class":200},[70,2245,2247,2249,2251,2253,2255,2257,2259,2261,2263,2265,2267,2269,2271,2273,2275,2277,2279,2281,2283,2285,2287,2289,2291,2293,2295,2297],{"class":72,"line":2246},163,[70,2248,1803],{"class":275},[70,2250,635],{"class":76},[70,2252,1758],{"class":200},[70,2254,1549],{"class":275},[70,2256,635],{"class":76},[70,2258,279],{"class":200},[70,2260,1751],{"class":76},[70,2262,1549],{"class":275},[70,2264,635],{"class":76},[70,2266,1758],{"class":200},[70,2268,1767],{"class":275},[70,2270,635],{"class":76},[70,2272,1758],{"class":200},[70,2274,1767],{"class":275},[70,2276,635],{"class":76},[70,2278,279],{"class":200},[70,2280,1751],{"class":76},[70,2282,1780],{"class":275},[70,2284,635],{"class":76},[70,2286,1758],{"class":200},[70,2288,1780],{"class":275},[70,2290,635],{"class":76},[70,2292,279],{"class":200},[70,2294,1780],{"class":275},[70,2296,635],{"class":76},[70,2298,1797],{"class":200},[70,2300,2302,2304,2306,2308,2310,2312,2314,2316,2318,2320,2322,2324,2326,2328,2330,2332,2334,2336,2338,2340,2342,2344,2346,2348,2350,2352,2354],{"class":72,"line":2301},164,[70,2303,1742],{"class":76},[70,2305,1549],{"class":275},[70,2307,635],{"class":76},[70,2309,1758],{"class":200},[70,2311,1549],{"class":275},[70,2313,635],{"class":76},[70,2315,279],{"class":200},[70,2317,1751],{"class":76},[70,2319,1549],{"class":275},[70,2321,635],{"class":76},[70,2323,1758],{"class":200},[70,2325,1767],{"class":275},[70,2327,635],{"class":76},[70,2329,1758],{"class":200},[70,2331,1767],{"class":275},[70,2333,635],{"class":76},[70,2335,279],{"class":200},[70,2337,1751],{"class":76},[70,2339,1780],{"class":275},[70,2341,635],{"class":76},[70,2343,1758],{"class":200},[70,2345,1767],{"class":275},[70,2347,635],{"class":76},[70,2349,279],{"class":200},[70,2351,1780],{"class":275},[70,2353,635],{"class":76},[70,2355,1797],{"class":200},[70,2357,2359,2361,2363,2365,2367,2369,2371,2373,2375,2377,2379,2381,2383,2385,2387,2389,2391,2393,2395,2397,2399,2401,2403,2405,2407,2409,2411,2413],{"class":72,"line":2358},165,[70,2360,1742],{"class":76},[70,2362,1549],{"class":275},[70,2364,635],{"class":76},[70,2366,279],{"class":200},[70,2368,1751],{"class":76},[70,2370,1549],{"class":275},[70,2372,635],{"class":76},[70,2374,279],{"class":200},[70,2376,1751],{"class":76},[70,2378,1549],{"class":275},[70,2380,635],{"class":76},[70,2382,1758],{"class":200},[70,2384,1767],{"class":275},[70,2386,635],{"class":76},[70,2388,1758],{"class":200},[70,2390,1767],{"class":275},[70,2392,635],{"class":76},[70,2394,279],{"class":200},[70,2396,1751],{"class":76},[70,2398,1780],{"class":275},[70,2400,635],{"class":76},[70,2402,1758],{"class":200},[70,2404,1767],{"class":275},[70,2406,635],{"class":76},[70,2408,279],{"class":200},[70,2410,1767],{"class":275},[70,2412,635],{"class":76},[70,2414,1797],{"class":200},[70,2416,2418],{"class":72,"line":2417},166,[70,2419,291],{"class":200},[70,2421,2423],{"class":72,"line":2422},167,[70,2424,2425],{"class":224},"    \u002F\u002F 左面\n",[70,2427,2429,2431,2433,2435,2437,2439,2441,2443,2445,2447,2449,2451,2453,2455,2457,2459,2461,2463,2465,2467,2469,2471,2473,2475,2477,2479],{"class":72,"line":2428},168,[70,2430,1742],{"class":76},[70,2432,1549],{"class":275},[70,2434,635],{"class":76},[70,2436,1758],{"class":200},[70,2438,1549],{"class":275},[70,2440,635],{"class":76},[70,2442,1758],{"class":200},[70,2444,1549],{"class":275},[70,2446,635],{"class":76},[70,2448,279],{"class":200},[70,2450,1751],{"class":76},[70,2452,1780],{"class":275},[70,2454,635],{"class":76},[70,2456,1758],{"class":200},[70,2458,1767],{"class":275},[70,2460,635],{"class":76},[70,2462,1758],{"class":200},[70,2464,1767],{"class":275},[70,2466,635],{"class":76},[70,2468,1758],{"class":200},[70,2470,1780],{"class":275},[70,2472,635],{"class":76},[70,2474,279],{"class":200},[70,2476,1767],{"class":275},[70,2478,635],{"class":76},[70,2480,1797],{"class":200},[70,2482,2484,2486,2488,2490,2492,2494,2496,2498,2500,2502,2504,2506,2508,2510,2512,2514,2516,2518,2520,2522,2524,2526,2528,2530,2532,2534,2536],{"class":72,"line":2483},169,[70,2485,1742],{"class":76},[70,2487,1549],{"class":275},[70,2489,635],{"class":76},[70,2491,1758],{"class":200},[70,2493,1549],{"class":275},[70,2495,635],{"class":76},[70,2497,279],{"class":200},[70,2499,1751],{"class":76},[70,2501,1549],{"class":275},[70,2503,635],{"class":76},[70,2505,279],{"class":200},[70,2507,1751],{"class":76},[70,2509,1780],{"class":275},[70,2511,635],{"class":76},[70,2513,1758],{"class":200},[70,2515,1767],{"class":275},[70,2517,635],{"class":76},[70,2519,1758],{"class":200},[70,2521,1767],{"class":275},[70,2523,635],{"class":76},[70,2525,1758],{"class":200},[70,2527,1780],{"class":275},[70,2529,635],{"class":76},[70,2531,279],{"class":200},[70,2533,1780],{"class":275},[70,2535,635],{"class":76},[70,2537,1797],{"class":200},[70,2539,2541,2543,2545,2547,2549,2551,2553,2555,2557,2559,2561,2563,2565,2567,2569,2571,2573,2575,2577,2579,2581,2583,2585,2587,2589,2591,2593,2595],{"class":72,"line":2540},170,[70,2542,1742],{"class":76},[70,2544,1549],{"class":275},[70,2546,635],{"class":76},[70,2548,279],{"class":200},[70,2550,1751],{"class":76},[70,2552,1549],{"class":275},[70,2554,635],{"class":76},[70,2556,279],{"class":200},[70,2558,1751],{"class":76},[70,2560,1549],{"class":275},[70,2562,635],{"class":76},[70,2564,279],{"class":200},[70,2566,1751],{"class":76},[70,2568,1780],{"class":275},[70,2570,635],{"class":76},[70,2572,1758],{"class":200},[70,2574,1767],{"class":275},[70,2576,635],{"class":76},[70,2578,1758],{"class":200},[70,2580,1767],{"class":275},[70,2582,635],{"class":76},[70,2584,1758],{"class":200},[70,2586,1767],{"class":275},[70,2588,635],{"class":76},[70,2590,279],{"class":200},[70,2592,1780],{"class":275},[70,2594,635],{"class":76},[70,2596,1797],{"class":200},[70,2598,2600,2602,2604,2606,2608,2610,2612,2614,2616,2618,2620,2622,2624,2626,2628,2630,2632,2634,2636,2638,2640,2642,2644,2646,2648,2650,2652,2654],{"class":72,"line":2599},171,[70,2601,1742],{"class":76},[70,2603,1549],{"class":275},[70,2605,635],{"class":76},[70,2607,279],{"class":200},[70,2609,1751],{"class":76},[70,2611,1549],{"class":275},[70,2613,635],{"class":76},[70,2615,279],{"class":200},[70,2617,1751],{"class":76},[70,2619,1549],{"class":275},[70,2621,635],{"class":76},[70,2623,279],{"class":200},[70,2625,1751],{"class":76},[70,2627,1780],{"class":275},[70,2629,635],{"class":76},[70,2631,1758],{"class":200},[70,2633,1767],{"class":275},[70,2635,635],{"class":76},[70,2637,1758],{"class":200},[70,2639,1767],{"class":275},[70,2641,635],{"class":76},[70,2643,1758],{"class":200},[70,2645,1767],{"class":275},[70,2647,635],{"class":76},[70,2649,279],{"class":200},[70,2651,1780],{"class":275},[70,2653,635],{"class":76},[70,2655,1797],{"class":200},[70,2657,2659,2661,2663,2665,2667,2669,2671,2673,2675,2677,2679,2681,2683,2685,2687,2689,2691,2693,2695,2697,2699,2701,2703,2705,2707,2709,2711],{"class":72,"line":2658},172,[70,2660,1742],{"class":76},[70,2662,1549],{"class":275},[70,2664,635],{"class":76},[70,2666,279],{"class":200},[70,2668,1751],{"class":76},[70,2670,1549],{"class":275},[70,2672,635],{"class":76},[70,2674,1758],{"class":200},[70,2676,1549],{"class":275},[70,2678,635],{"class":76},[70,2680,279],{"class":200},[70,2682,1751],{"class":76},[70,2684,1780],{"class":275},[70,2686,635],{"class":76},[70,2688,1758],{"class":200},[70,2690,1767],{"class":275},[70,2692,635],{"class":76},[70,2694,1758],{"class":200},[70,2696,1767],{"class":275},[70,2698,635],{"class":76},[70,2700,1758],{"class":200},[70,2702,1767],{"class":275},[70,2704,635],{"class":76},[70,2706,279],{"class":200},[70,2708,1767],{"class":275},[70,2710,635],{"class":76},[70,2712,1797],{"class":200},[70,2714,2716,2718,2720,2722,2724,2726,2728,2730,2732,2734,2736,2738,2740,2742,2744,2746,2748,2750,2752,2754,2756,2758,2760,2762,2764,2766],{"class":72,"line":2715},173,[70,2717,1742],{"class":76},[70,2719,1549],{"class":275},[70,2721,635],{"class":76},[70,2723,1758],{"class":200},[70,2725,1549],{"class":275},[70,2727,635],{"class":76},[70,2729,1758],{"class":200},[70,2731,1549],{"class":275},[70,2733,635],{"class":76},[70,2735,279],{"class":200},[70,2737,1751],{"class":76},[70,2739,1780],{"class":275},[70,2741,635],{"class":76},[70,2743,1758],{"class":200},[70,2745,1767],{"class":275},[70,2747,635],{"class":76},[70,2749,1758],{"class":200},[70,2751,1767],{"class":275},[70,2753,635],{"class":76},[70,2755,1758],{"class":200},[70,2757,1780],{"class":275},[70,2759,635],{"class":76},[70,2761,279],{"class":200},[70,2763,1767],{"class":275},[70,2765,635],{"class":76},[70,2767,1797],{"class":200},[70,2769,2771],{"class":72,"line":2770},174,[70,2772,291],{"class":200},[70,2774,2776],{"class":72,"line":2775},175,[70,2777,2778],{"class":224},"    \u002F\u002F 右面\n",[70,2780,2782,2784,2786,2788,2790,2792,2794,2796,2798,2800,2802,2804,2806,2808,2810,2812,2814,2816,2818,2820,2822,2824,2826,2828],{"class":72,"line":2781},176,[70,2783,1803],{"class":275},[70,2785,635],{"class":76},[70,2787,1758],{"class":200},[70,2789,1549],{"class":275},[70,2791,635],{"class":76},[70,2793,1758],{"class":200},[70,2795,1549],{"class":275},[70,2797,635],{"class":76},[70,2799,1758],{"class":200},[70,2801,1780],{"class":275},[70,2803,635],{"class":76},[70,2805,1758],{"class":200},[70,2807,1767],{"class":275},[70,2809,635],{"class":76},[70,2811,1758],{"class":200},[70,2813,1767],{"class":275},[70,2815,635],{"class":76},[70,2817,1758],{"class":200},[70,2819,1780],{"class":275},[70,2821,635],{"class":76},[70,2823,279],{"class":200},[70,2825,1767],{"class":275},[70,2827,635],{"class":76},[70,2829,1797],{"class":200},[70,2831,2833,2835,2837,2839,2841,2843,2845,2847,2849,2851,2853,2855,2857,2859,2861,2863,2865,2867,2869,2871,2873,2875,2877,2879,2881],{"class":72,"line":2832},177,[70,2834,1803],{"class":275},[70,2836,635],{"class":76},[70,2838,1758],{"class":200},[70,2840,1549],{"class":275},[70,2842,635],{"class":76},[70,2844,279],{"class":200},[70,2846,1751],{"class":76},[70,2848,1549],{"class":275},[70,2850,635],{"class":76},[70,2852,1758],{"class":200},[70,2854,1780],{"class":275},[70,2856,635],{"class":76},[70,2858,1758],{"class":200},[70,2860,1767],{"class":275},[70,2862,635],{"class":76},[70,2864,1758],{"class":200},[70,2866,1767],{"class":275},[70,2868,635],{"class":76},[70,2870,1758],{"class":200},[70,2872,1780],{"class":275},[70,2874,635],{"class":76},[70,2876,279],{"class":200},[70,2878,1780],{"class":275},[70,2880,635],{"class":76},[70,2882,1797],{"class":200},[70,2884,2886,2888,2890,2892,2894,2896,2898,2900,2902,2904,2906,2908,2910,2912,2914,2916,2918,2920,2922,2924,2926,2928,2930,2932,2934,2936],{"class":72,"line":2885},178,[70,2887,1803],{"class":275},[70,2889,635],{"class":76},[70,2891,279],{"class":200},[70,2893,1751],{"class":76},[70,2895,1549],{"class":275},[70,2897,635],{"class":76},[70,2899,279],{"class":200},[70,2901,1751],{"class":76},[70,2903,1549],{"class":275},[70,2905,635],{"class":76},[70,2907,1758],{"class":200},[70,2909,1780],{"class":275},[70,2911,635],{"class":76},[70,2913,1758],{"class":200},[70,2915,1767],{"class":275},[70,2917,635],{"class":76},[70,2919,1758],{"class":200},[70,2921,1767],{"class":275},[70,2923,635],{"class":76},[70,2925,1758],{"class":200},[70,2927,1767],{"class":275},[70,2929,635],{"class":76},[70,2931,279],{"class":200},[70,2933,1780],{"class":275},[70,2935,635],{"class":76},[70,2937,1797],{"class":200},[70,2939,2941,2943,2945,2947,2949,2951,2953,2955,2957,2959,2961,2963,2965,2967,2969,2971,2973,2975,2977,2979,2981,2983,2985,2987,2989,2991],{"class":72,"line":2940},179,[70,2942,1803],{"class":275},[70,2944,635],{"class":76},[70,2946,279],{"class":200},[70,2948,1751],{"class":76},[70,2950,1549],{"class":275},[70,2952,635],{"class":76},[70,2954,279],{"class":200},[70,2956,1751],{"class":76},[70,2958,1549],{"class":275},[70,2960,635],{"class":76},[70,2962,1758],{"class":200},[70,2964,1780],{"class":275},[70,2966,635],{"class":76},[70,2968,1758],{"class":200},[70,2970,1767],{"class":275},[70,2972,635],{"class":76},[70,2974,1758],{"class":200},[70,2976,1767],{"class":275},[70,2978,635],{"class":76},[70,2980,1758],{"class":200},[70,2982,1767],{"class":275},[70,2984,635],{"class":76},[70,2986,279],{"class":200},[70,2988,1780],{"class":275},[70,2990,635],{"class":76},[70,2992,1797],{"class":200},[70,2994,2996,2998,3000,3002,3004,3006,3008,3010,3012,3014,3016,3018,3020,3022,3024,3026,3028,3030,3032,3034,3036,3038,3040,3042,3044],{"class":72,"line":2995},180,[70,2997,1803],{"class":275},[70,2999,635],{"class":76},[70,3001,279],{"class":200},[70,3003,1751],{"class":76},[70,3005,1549],{"class":275},[70,3007,635],{"class":76},[70,3009,1758],{"class":200},[70,3011,1549],{"class":275},[70,3013,635],{"class":76},[70,3015,1758],{"class":200},[70,3017,1780],{"class":275},[70,3019,635],{"class":76},[70,3021,1758],{"class":200},[70,3023,1767],{"class":275},[70,3025,635],{"class":76},[70,3027,1758],{"class":200},[70,3029,1767],{"class":275},[70,3031,635],{"class":76},[70,3033,1758],{"class":200},[70,3035,1767],{"class":275},[70,3037,635],{"class":76},[70,3039,279],{"class":200},[70,3041,1767],{"class":275},[70,3043,635],{"class":76},[70,3045,1797],{"class":200},[70,3047,3049,3051,3053,3055,3057,3059,3061,3063,3065,3067,3069,3071,3073,3075,3077,3079,3081,3083,3085,3087,3089,3091,3093,3095],{"class":72,"line":3048},181,[70,3050,1803],{"class":275},[70,3052,635],{"class":76},[70,3054,1758],{"class":200},[70,3056,1549],{"class":275},[70,3058,635],{"class":76},[70,3060,1758],{"class":200},[70,3062,1549],{"class":275},[70,3064,635],{"class":76},[70,3066,1758],{"class":200},[70,3068,1780],{"class":275},[70,3070,635],{"class":76},[70,3072,1758],{"class":200},[70,3074,1767],{"class":275},[70,3076,635],{"class":76},[70,3078,1758],{"class":200},[70,3080,1767],{"class":275},[70,3082,635],{"class":76},[70,3084,1758],{"class":200},[70,3086,1780],{"class":275},[70,3088,635],{"class":76},[70,3090,279],{"class":200},[70,3092,1767],{"class":275},[70,3094,635],{"class":76},[70,3096,1797],{"class":200},[70,3098,3100],{"class":72,"line":3099},182,[70,3101,291],{"class":200},[70,3103,3105],{"class":72,"line":3104},183,[70,3106,3107],{"class":224},"    \u002F\u002F 下面\n",[70,3109,3111,3113,3115,3117,3119,3121,3123,3125,3127,3129,3131,3133,3135,3137,3139,3141,3143,3145,3147,3149,3151,3153,3155,3157,3159,3161,3163,3165],{"class":72,"line":3110},184,[70,3112,1742],{"class":76},[70,3114,1549],{"class":275},[70,3116,635],{"class":76},[70,3118,279],{"class":200},[70,3120,1751],{"class":76},[70,3122,1549],{"class":275},[70,3124,635],{"class":76},[70,3126,279],{"class":200},[70,3128,1751],{"class":76},[70,3130,1549],{"class":275},[70,3132,635],{"class":76},[70,3134,1758],{"class":200},[70,3136,1767],{"class":275},[70,3138,635],{"class":76},[70,3140,279],{"class":200},[70,3142,1751],{"class":76},[70,3144,1780],{"class":275},[70,3146,635],{"class":76},[70,3148,1758],{"class":200},[70,3150,1767],{"class":275},[70,3152,635],{"class":76},[70,3154,1758],{"class":200},[70,3156,1767],{"class":275},[70,3158,635],{"class":76},[70,3160,279],{"class":200},[70,3162,1780],{"class":275},[70,3164,635],{"class":76},[70,3166,1797],{"class":200},[70,3168,3170,3172,3174,3176,3178,3180,3182,3184,3186,3188,3190,3192,3194,3196,3198,3200,3202,3204,3206,3208,3210,3212,3214,3216,3218,3220,3222],{"class":72,"line":3169},185,[70,3171,1803],{"class":275},[70,3173,635],{"class":76},[70,3175,279],{"class":200},[70,3177,1751],{"class":76},[70,3179,1549],{"class":275},[70,3181,635],{"class":76},[70,3183,279],{"class":200},[70,3185,1751],{"class":76},[70,3187,1549],{"class":275},[70,3189,635],{"class":76},[70,3191,1758],{"class":200},[70,3193,1767],{"class":275},[70,3195,635],{"class":76},[70,3197,279],{"class":200},[70,3199,1751],{"class":76},[70,3201,1780],{"class":275},[70,3203,635],{"class":76},[70,3205,1758],{"class":200},[70,3207,1767],{"class":275},[70,3209,635],{"class":76},[70,3211,1758],{"class":200},[70,3213,1780],{"class":275},[70,3215,635],{"class":76},[70,3217,279],{"class":200},[70,3219,1780],{"class":275},[70,3221,635],{"class":76},[70,3223,1797],{"class":200},[70,3225,3227,3229,3231,3233,3235,3237,3239,3241,3243,3245,3247,3249,3251,3253,3255,3257,3259,3261,3263,3265,3267,3269,3271,3273,3275,3277],{"class":72,"line":3226},186,[70,3228,1803],{"class":275},[70,3230,635],{"class":76},[70,3232,279],{"class":200},[70,3234,1751],{"class":76},[70,3236,1549],{"class":275},[70,3238,635],{"class":76},[70,3240,1758],{"class":200},[70,3242,1549],{"class":275},[70,3244,635],{"class":76},[70,3246,1758],{"class":200},[70,3248,1767],{"class":275},[70,3250,635],{"class":76},[70,3252,279],{"class":200},[70,3254,1751],{"class":76},[70,3256,1780],{"class":275},[70,3258,635],{"class":76},[70,3260,1758],{"class":200},[70,3262,1767],{"class":275},[70,3264,635],{"class":76},[70,3266,1758],{"class":200},[70,3268,1780],{"class":275},[70,3270,635],{"class":76},[70,3272,279],{"class":200},[70,3274,1767],{"class":275},[70,3276,635],{"class":76},[70,3278,1797],{"class":200},[70,3280,3282,3284,3286,3288,3290,3292,3294,3296,3298,3300,3302,3304,3306,3308,3310,3312,3314,3316,3318,3320,3322,3324,3326,3328,3330,3332],{"class":72,"line":3281},187,[70,3283,1803],{"class":275},[70,3285,635],{"class":76},[70,3287,279],{"class":200},[70,3289,1751],{"class":76},[70,3291,1549],{"class":275},[70,3293,635],{"class":76},[70,3295,1758],{"class":200},[70,3297,1549],{"class":275},[70,3299,635],{"class":76},[70,3301,1758],{"class":200},[70,3303,1767],{"class":275},[70,3305,635],{"class":76},[70,3307,279],{"class":200},[70,3309,1751],{"class":76},[70,3311,1780],{"class":275},[70,3313,635],{"class":76},[70,3315,1758],{"class":200},[70,3317,1767],{"class":275},[70,3319,635],{"class":76},[70,3321,1758],{"class":200},[70,3323,1780],{"class":275},[70,3325,635],{"class":76},[70,3327,279],{"class":200},[70,3329,1767],{"class":275},[70,3331,635],{"class":76},[70,3333,1797],{"class":200},[70,3335,3337,3339,3341,3343,3345,3347,3349,3351,3353,3355,3357,3359,3361,3363,3365,3367,3369,3371,3373,3375,3377,3379,3381,3383,3385,3387,3389],{"class":72,"line":3336},188,[70,3338,1742],{"class":76},[70,3340,1549],{"class":275},[70,3342,635],{"class":76},[70,3344,279],{"class":200},[70,3346,1751],{"class":76},[70,3348,1549],{"class":275},[70,3350,635],{"class":76},[70,3352,1758],{"class":200},[70,3354,1549],{"class":275},[70,3356,635],{"class":76},[70,3358,1758],{"class":200},[70,3360,1767],{"class":275},[70,3362,635],{"class":76},[70,3364,279],{"class":200},[70,3366,1751],{"class":76},[70,3368,1780],{"class":275},[70,3370,635],{"class":76},[70,3372,1758],{"class":200},[70,3374,1767],{"class":275},[70,3376,635],{"class":76},[70,3378,1758],{"class":200},[70,3380,1767],{"class":275},[70,3382,635],{"class":76},[70,3384,279],{"class":200},[70,3386,1767],{"class":275},[70,3388,635],{"class":76},[70,3390,1797],{"class":200},[70,3392,3394,3396,3398,3400,3402,3404,3406,3408,3410,3412,3414,3416,3418,3420,3422,3424,3426,3428,3430,3432,3434,3436,3438,3440,3442,3444,3446,3448],{"class":72,"line":3393},189,[70,3395,1742],{"class":76},[70,3397,1549],{"class":275},[70,3399,635],{"class":76},[70,3401,279],{"class":200},[70,3403,1751],{"class":76},[70,3405,1549],{"class":275},[70,3407,635],{"class":76},[70,3409,279],{"class":200},[70,3411,1751],{"class":76},[70,3413,1549],{"class":275},[70,3415,635],{"class":76},[70,3417,1758],{"class":200},[70,3419,1767],{"class":275},[70,3421,635],{"class":76},[70,3423,279],{"class":200},[70,3425,1751],{"class":76},[70,3427,1780],{"class":275},[70,3429,635],{"class":76},[70,3431,1758],{"class":200},[70,3433,1767],{"class":275},[70,3435,635],{"class":76},[70,3437,1758],{"class":200},[70,3439,1767],{"class":275},[70,3441,635],{"class":76},[70,3443,279],{"class":200},[70,3445,1780],{"class":275},[70,3447,635],{"class":76},[70,3449,1797],{"class":200},[70,3451,3453],{"class":72,"line":3452},190,[70,3454,291],{"class":200},[70,3456,3458],{"class":72,"line":3457},191,[70,3459,3460],{"class":224},"    \u002F\u002F 上面\n",[70,3462,3464,3466,3468,3470,3472,3474,3476,3478,3480,3482,3484,3486,3488,3490,3492,3494,3496,3498,3500,3502,3504,3506,3508,3510,3512,3514],{"class":72,"line":3463},192,[70,3465,1742],{"class":76},[70,3467,1549],{"class":275},[70,3469,635],{"class":76},[70,3471,1758],{"class":200},[70,3473,1549],{"class":275},[70,3475,635],{"class":76},[70,3477,279],{"class":200},[70,3479,1751],{"class":76},[70,3481,1549],{"class":275},[70,3483,635],{"class":76},[70,3485,1758],{"class":200},[70,3487,1767],{"class":275},[70,3489,635],{"class":76},[70,3491,1758],{"class":200},[70,3493,1780],{"class":275},[70,3495,635],{"class":76},[70,3497,1758],{"class":200},[70,3499,1767],{"class":275},[70,3501,635],{"class":76},[70,3503,1758],{"class":200},[70,3505,1767],{"class":275},[70,3507,635],{"class":76},[70,3509,279],{"class":200},[70,3511,1780],{"class":275},[70,3513,635],{"class":76},[70,3515,1797],{"class":200},[70,3517,3519,3521,3523,3525,3527,3529,3531,3533,3535,3537,3539,3541,3543,3545,3547,3549,3551,3553,3555,3557,3559,3561,3563,3565,3567],{"class":72,"line":3518},193,[70,3520,1803],{"class":275},[70,3522,635],{"class":76},[70,3524,1758],{"class":200},[70,3526,1549],{"class":275},[70,3528,635],{"class":76},[70,3530,279],{"class":200},[70,3532,1751],{"class":76},[70,3534,1549],{"class":275},[70,3536,635],{"class":76},[70,3538,1758],{"class":200},[70,3540,1767],{"class":275},[70,3542,635],{"class":76},[70,3544,1758],{"class":200},[70,3546,1780],{"class":275},[70,3548,635],{"class":76},[70,3550,1758],{"class":200},[70,3552,1767],{"class":275},[70,3554,635],{"class":76},[70,3556,1758],{"class":200},[70,3558,1780],{"class":275},[70,3560,635],{"class":76},[70,3562,279],{"class":200},[70,3564,1780],{"class":275},[70,3566,635],{"class":76},[70,3568,1797],{"class":200},[70,3570,3572,3574,3576,3578,3580,3582,3584,3586,3588,3590,3592,3594,3596,3598,3600,3602,3604,3606,3608,3610,3612,3614,3616,3618],{"class":72,"line":3571},194,[70,3573,1803],{"class":275},[70,3575,635],{"class":76},[70,3577,1758],{"class":200},[70,3579,1549],{"class":275},[70,3581,635],{"class":76},[70,3583,1758],{"class":200},[70,3585,1549],{"class":275},[70,3587,635],{"class":76},[70,3589,1758],{"class":200},[70,3591,1767],{"class":275},[70,3593,635],{"class":76},[70,3595,1758],{"class":200},[70,3597,1780],{"class":275},[70,3599,635],{"class":76},[70,3601,1758],{"class":200},[70,3603,1767],{"class":275},[70,3605,635],{"class":76},[70,3607,1758],{"class":200},[70,3609,1780],{"class":275},[70,3611,635],{"class":76},[70,3613,279],{"class":200},[70,3615,1767],{"class":275},[70,3617,635],{"class":76},[70,3619,1797],{"class":200},[70,3621,3623,3625,3627,3629,3631,3633,3635,3637,3639,3641,3643,3645,3647,3649,3651,3653,3655,3657,3659,3661,3663,3665,3667,3669],{"class":72,"line":3622},195,[70,3624,1803],{"class":275},[70,3626,635],{"class":76},[70,3628,1758],{"class":200},[70,3630,1549],{"class":275},[70,3632,635],{"class":76},[70,3634,1758],{"class":200},[70,3636,1549],{"class":275},[70,3638,635],{"class":76},[70,3640,1758],{"class":200},[70,3642,1767],{"class":275},[70,3644,635],{"class":76},[70,3646,1758],{"class":200},[70,3648,1780],{"class":275},[70,3650,635],{"class":76},[70,3652,1758],{"class":200},[70,3654,1767],{"class":275},[70,3656,635],{"class":76},[70,3658,1758],{"class":200},[70,3660,1780],{"class":275},[70,3662,635],{"class":76},[70,3664,279],{"class":200},[70,3666,1767],{"class":275},[70,3668,635],{"class":76},[70,3670,1797],{"class":200},[70,3672,3674,3676,3678,3680,3682,3684,3686,3688,3690,3692,3694,3696,3698,3700,3702,3704,3706,3708,3710,3712,3714,3716,3718,3720,3722],{"class":72,"line":3673},196,[70,3675,1742],{"class":76},[70,3677,1549],{"class":275},[70,3679,635],{"class":76},[70,3681,1758],{"class":200},[70,3683,1549],{"class":275},[70,3685,635],{"class":76},[70,3687,1758],{"class":200},[70,3689,1549],{"class":275},[70,3691,635],{"class":76},[70,3693,1758],{"class":200},[70,3695,1767],{"class":275},[70,3697,635],{"class":76},[70,3699,1758],{"class":200},[70,3701,1780],{"class":275},[70,3703,635],{"class":76},[70,3705,1758],{"class":200},[70,3707,1767],{"class":275},[70,3709,635],{"class":76},[70,3711,1758],{"class":200},[70,3713,1767],{"class":275},[70,3715,635],{"class":76},[70,3717,279],{"class":200},[70,3719,1767],{"class":275},[70,3721,635],{"class":76},[70,3723,1797],{"class":200},[70,3725,3727,3729,3731,3733,3735,3737,3739,3741,3743,3745,3747,3749,3751,3753,3755,3757,3759,3761,3763,3765,3767,3769,3771,3773,3775],{"class":72,"line":3726},197,[70,3728,1742],{"class":76},[70,3730,1549],{"class":275},[70,3732,635],{"class":76},[70,3734,1758],{"class":200},[70,3736,1549],{"class":275},[70,3738,635],{"class":76},[70,3740,279],{"class":200},[70,3742,1751],{"class":76},[70,3744,1549],{"class":275},[70,3746,635],{"class":76},[70,3748,1758],{"class":200},[70,3750,1767],{"class":275},[70,3752,635],{"class":76},[70,3754,1758],{"class":200},[70,3756,1780],{"class":275},[70,3758,635],{"class":76},[70,3760,1758],{"class":200},[70,3762,1767],{"class":275},[70,3764,635],{"class":76},[70,3766,1758],{"class":200},[70,3768,1767],{"class":275},[70,3770,635],{"class":76},[70,3772,279],{"class":200},[70,3774,1780],{"class":275},[70,3776,3777],{"class":76},"f\n",[70,3779,3781],{"class":72,"line":3780},198,[70,3782,3783],{"class":200},"};\n",[70,3785,3787],{"class":72,"line":3786},199,[70,3788,291],{"class":200},[70,3790,3792],{"class":72,"line":3791},200,[70,3793,3794],{"class":224},"    \u002F\u002F 创建VAO\n",[70,3796,3798,3800,3802],{"class":72,"line":3797},201,[70,3799,259],{"class":76},[70,3801,234],{"class":76},[70,3803,3804],{"class":200}," VAO;\n",[70,3806,3808,3811,3813,3815,3817,3819],{"class":72,"line":3807},202,[70,3809,3810],{"class":196},"    glGenVertexArrays",[70,3812,240],{"class":200},[70,3814,276],{"class":275},[70,3816,279],{"class":200},[70,3818,282],{"class":76},[70,3820,3821],{"class":200},"VAO);\n",[70,3823,3825,3828,3831],{"class":72,"line":3824},203,[70,3826,3827],{"class":196},"    glBindVertexArray",[70,3829,3830],{"class":200},"(VAO);",[70,3832,3833],{"class":224}," \u002F\u002F 绑定VAO\n",[70,3835,3837],{"class":72,"line":3836},204,[70,3838,184],{"emptyLinePlaceholder":183},[70,3840,3842],{"class":72,"line":3841},205,[70,3843,3844],{"class":224},"    \u002F\u002F 创建VBO\n",[70,3846,3848,3850,3852],{"class":72,"line":3847},206,[70,3849,259],{"class":76},[70,3851,234],{"class":76},[70,3853,3854],{"class":200}," VBO;\n",[70,3856,3858,3861,3863,3865,3867,3869],{"class":72,"line":3857},207,[70,3859,3860],{"class":196},"    glGenBuffers",[70,3862,240],{"class":200},[70,3864,276],{"class":275},[70,3866,279],{"class":200},[70,3868,282],{"class":76},[70,3870,3871],{"class":200},"VBO);\n",[70,3873,3875,3878,3881],{"class":72,"line":3874},208,[70,3876,3877],{"class":196},"    glBindBuffer",[70,3879,3880],{"class":200},"(GL_ARRAY_BUFFER, VBO);",[70,3882,3883],{"class":224}," \u002F\u002F 绑定VBO\n",[70,3885,3887,3890,3893,3896],{"class":72,"line":3886},209,[70,3888,3889],{"class":196},"    glBufferData",[70,3891,3892],{"class":200},"(GL_ARRAY_BUFFER, ",[70,3894,3895],{"class":76},"sizeof",[70,3897,3898],{"class":200},"(vertices), vertices, GL_STATIC_DRAW);\n",[70,3900,3902],{"class":72,"line":3901},210,[70,3903,184],{"emptyLinePlaceholder":183},[70,3905,3907,3910],{"class":72,"line":3906},211,[70,3908,3909],{"class":76},"    int",[70,3911,3912],{"class":200}," nrAttributes;\n",[70,3914,3916,3919,3922,3924],{"class":72,"line":3915},212,[70,3917,3918],{"class":196},"    glGetIntegerv",[70,3920,3921],{"class":200},"(GL_MAX_VERTEX_ATTRIBS, ",[70,3923,282],{"class":76},[70,3925,3926],{"class":200},"nrAttributes);\n",[70,3928,3930,3933,3935,3937,3940,3942,3945,3947,3949],{"class":72,"line":3929},213,[70,3931,3932],{"class":196},"    std",[70,3934,339],{"class":200},[70,3936,342],{"class":76},[70,3938,3939],{"class":80}," \"Maximum nr of vertex attributes supported: \"",[70,3941,348],{"class":76},[70,3943,3944],{"class":200}," nrAttributes ",[70,3946,342],{"class":76},[70,3948,356],{"class":196},[70,3950,359],{"class":200},[70,3952,3954],{"class":72,"line":3953},214,[70,3955,184],{"emptyLinePlaceholder":183},[70,3957,3959],{"class":72,"line":3958},215,[70,3960,3961],{"class":224},"    \u002F\u002F 位置属性\n",[70,3963,3965,3968,3970,3972,3974,3976,3979,3982,3984,3987,3989,3991,3993,3996,3998,4000],{"class":72,"line":3964},216,[70,3966,3967],{"class":196},"    glVertexAttribPointer",[70,3969,240],{"class":200},[70,3971,424],{"class":275},[70,3973,279],{"class":200},[70,3975,1065],{"class":275},[70,3977,3978],{"class":200},", GL_FLOAT, GL_FALSE, ",[70,3980,3981],{"class":275},"8",[70,3983,746],{"class":76},[70,3985,3986],{"class":76}," sizeof",[70,3988,240],{"class":200},[70,3990,624],{"class":76},[70,3992,998],{"class":200},[70,3994,3995],{"class":76},"void*",[70,3997,1003],{"class":200},[70,3999,424],{"class":275},[70,4001,427],{"class":200},[70,4003,4005,4008,4010,4012,4015],{"class":72,"line":4004},217,[70,4006,4007],{"class":196},"    glEnableVertexAttribArray",[70,4009,240],{"class":200},[70,4011,424],{"class":275},[70,4013,4014],{"class":200},");",[70,4016,4017],{"class":224}," \u002F\u002F 启用顶点属性\n",[70,4019,4021],{"class":72,"line":4020},218,[70,4022,291],{"class":200},[70,4024,4026],{"class":72,"line":4025},219,[70,4027,4028],{"class":224},"    \u002F\u002F 法线属性\n",[70,4030,4032,4034,4036,4038,4040,4042,4044,4046,4048,4050,4052,4054,4056,4058,4061,4063,4065,4067,4069,4071],{"class":72,"line":4031},220,[70,4033,3967],{"class":196},[70,4035,240],{"class":200},[70,4037,276],{"class":275},[70,4039,279],{"class":200},[70,4041,1065],{"class":275},[70,4043,3978],{"class":200},[70,4045,3981],{"class":275},[70,4047,746],{"class":76},[70,4049,3986],{"class":76},[70,4051,240],{"class":200},[70,4053,624],{"class":76},[70,4055,998],{"class":200},[70,4057,3995],{"class":76},[70,4059,4060],{"class":200},")(",[70,4062,1065],{"class":275},[70,4064,746],{"class":76},[70,4066,3986],{"class":76},[70,4068,240],{"class":200},[70,4070,624],{"class":76},[70,4072,4073],{"class":200},")));\n",[70,4075,4077,4079,4081,4083,4085],{"class":72,"line":4076},221,[70,4078,4007],{"class":196},[70,4080,240],{"class":200},[70,4082,276],{"class":275},[70,4084,4014],{"class":200},[70,4086,4087],{"class":224}," \u002F\u002F 启用法线属性\n",[70,4089,4091],{"class":72,"line":4090},222,[70,4092,291],{"class":200},[70,4094,4096],{"class":72,"line":4095},223,[70,4097,4098],{"class":224},"    \u002F\u002F 纹理坐标属性\n",[70,4100,4102,4104,4106,4109,4111,4113,4115,4117,4119,4121,4123,4125,4127,4129,4131,4134,4136,4138,4140,4142],{"class":72,"line":4101},224,[70,4103,3967],{"class":196},[70,4105,240],{"class":200},[70,4107,4108],{"class":275},"2",[70,4110,279],{"class":200},[70,4112,4108],{"class":275},[70,4114,3978],{"class":200},[70,4116,3981],{"class":275},[70,4118,746],{"class":76},[70,4120,3986],{"class":76},[70,4122,240],{"class":200},[70,4124,624],{"class":76},[70,4126,998],{"class":200},[70,4128,3995],{"class":76},[70,4130,4060],{"class":200},[70,4132,4133],{"class":275},"6",[70,4135,746],{"class":76},[70,4137,3986],{"class":76},[70,4139,240],{"class":200},[70,4141,624],{"class":76},[70,4143,4073],{"class":200},[70,4145,4147,4149,4151,4153,4155],{"class":72,"line":4146},225,[70,4148,4007],{"class":196},[70,4150,240],{"class":200},[70,4152,4108],{"class":275},[70,4154,4014],{"class":200},[70,4156,4157],{"class":224}," \u002F\u002F 启用纹理坐标属性\n",[70,4159,4161],{"class":72,"line":4160},226,[70,4162,184],{"emptyLinePlaceholder":183},[70,4164,4166],{"class":72,"line":4165},227,[70,4167,4168],{"class":224},"    \u002F\u002F 构建并编译着色器程序\n",[70,4170,4172,4175,4178,4180,4183,4185,4188],{"class":72,"line":4171},228,[70,4173,4174],{"class":196},"    Shader",[70,4176,4177],{"class":196}," lightingShader",[70,4179,240],{"class":200},[70,4181,4182],{"class":80},"\"shader\u002Flighting.vert\"",[70,4184,279],{"class":200},[70,4186,4187],{"class":80},"\"shader\u002Flighting.frag\"",[70,4189,427],{"class":200},[70,4191,4193,4195,4198,4200,4203,4205,4208],{"class":72,"line":4192},229,[70,4194,4174],{"class":196},[70,4196,4197],{"class":196}," lampShader",[70,4199,240],{"class":200},[70,4201,4202],{"class":80},"\"shader\u002Flamp.vert\"",[70,4204,279],{"class":200},[70,4206,4207],{"class":80},"\"shader\u002Flamp.frag\"",[70,4209,427],{"class":200},[70,4211,4213],{"class":72,"line":4212},230,[70,4214,184],{"emptyLinePlaceholder":183},[70,4216,4218],{"class":72,"line":4217},231,[70,4219,4220],{"class":224},"    \u002F\u002F 加载纹理\n",[70,4222,4224,4226,4228,4231,4233,4235,4237,4240],{"class":72,"line":4223},232,[70,4225,259],{"class":76},[70,4227,234],{"class":76},[70,4229,4230],{"class":200}," texture1 ",[70,4232,309],{"class":76},[70,4234,237],{"class":196},[70,4236,240],{"class":200},[70,4238,4239],{"class":80},"\"Assets\u002Fimage.png\"",[70,4241,427],{"class":200},[70,4243,4245,4247,4250,4252,4255],{"class":72,"line":4244},233,[70,4246,321],{"class":76},[70,4248,4249],{"class":200}," (texture1 ",[70,4251,792],{"class":76},[70,4253,4254],{"class":275}," 0",[70,4256,253],{"class":200},[70,4258,4260,4262,4264,4266,4269,4271,4273],{"class":72,"line":4259},234,[70,4261,336],{"class":196},[70,4263,339],{"class":200},[70,4265,342],{"class":76},[70,4267,4268],{"class":80}," \"Failed to load texture\"",[70,4270,348],{"class":76},[70,4272,356],{"class":196},[70,4274,359],{"class":200},[70,4276,4278],{"class":72,"line":4277},235,[70,4279,373],{"class":200},[70,4281,4283],{"class":72,"line":4282},236,[70,4284,184],{"emptyLinePlaceholder":183},[70,4286,4288],{"class":72,"line":4287},237,[70,4289,4290],{"class":224},"    \u002F\u002F 创建光源的 VAO\n",[70,4292,4294,4296,4298],{"class":72,"line":4293},238,[70,4295,259],{"class":76},[70,4297,234],{"class":76},[70,4299,4300],{"class":200}," lightVAO;\n",[70,4302,4304,4306,4308,4310,4312,4314],{"class":72,"line":4303},239,[70,4305,3810],{"class":196},[70,4307,240],{"class":200},[70,4309,276],{"class":275},[70,4311,279],{"class":200},[70,4313,282],{"class":76},[70,4315,4316],{"class":200},"lightVAO);\n",[70,4318,4320,4322],{"class":72,"line":4319},240,[70,4321,3827],{"class":196},[70,4323,4324],{"class":200},"(lightVAO);\n",[70,4326,4328,4330],{"class":72,"line":4327},241,[70,4329,3877],{"class":196},[70,4331,4332],{"class":200},"(GL_ARRAY_BUFFER, VBO);\n",[70,4334,4336,4338,4340,4342,4344,4346,4348,4350,4352,4354,4356,4358,4360,4362,4364,4366],{"class":72,"line":4335},242,[70,4337,3967],{"class":196},[70,4339,240],{"class":200},[70,4341,424],{"class":275},[70,4343,279],{"class":200},[70,4345,1065],{"class":275},[70,4347,3978],{"class":200},[70,4349,3981],{"class":275},[70,4351,746],{"class":76},[70,4353,3986],{"class":76},[70,4355,240],{"class":200},[70,4357,624],{"class":76},[70,4359,998],{"class":200},[70,4361,3995],{"class":76},[70,4363,1003],{"class":200},[70,4365,424],{"class":275},[70,4367,427],{"class":200},[70,4369,4371,4373,4375,4377],{"class":72,"line":4370},243,[70,4372,4007],{"class":196},[70,4374,240],{"class":200},[70,4376,424],{"class":275},[70,4378,427],{"class":200},[70,4380,4382],{"class":72,"line":4381},244,[70,4383,184],{"emptyLinePlaceholder":183},[70,4385,4387],{"class":72,"line":4386},245,[70,4388,4389],{"class":224},"    \u002F\u002F 光源位置\n",[70,4391,4393,4396,4399,4401,4404,4406,4408,4410,4412,4414,4417,4419],{"class":72,"line":4392},246,[70,4394,4395],{"class":196},"    vec3",[70,4397,4398],{"class":196}," lightPos",[70,4400,240],{"class":200},[70,4402,4403],{"class":275},"1.2",[70,4405,635],{"class":76},[70,4407,279],{"class":200},[70,4409,1780],{"class":275},[70,4411,635],{"class":76},[70,4413,279],{"class":200},[70,4415,4416],{"class":275},"2.0",[70,4418,635],{"class":76},[70,4420,427],{"class":200},[70,4422,4424],{"class":72,"line":4423},247,[70,4425,291],{"class":200},[70,4427,4429],{"class":72,"line":4428},248,[70,4430,4431],{"class":224},"    \u002F\u002F 相机位置（观察空间）\n",[70,4433,4435,4437,4440,4442,4444,4447],{"class":72,"line":4434},249,[70,4436,4395],{"class":196},[70,4438,4439],{"class":200}," viewPos ",[70,4441,309],{"class":76},[70,4443,925],{"class":200},[70,4445,4446],{"class":196},"getCameraPosition",[70,4448,1053],{"class":200},[70,4450,4452],{"class":72,"line":4451},250,[70,4453,184],{"emptyLinePlaceholder":183},[70,4455,4457],{"class":72,"line":4456},251,[70,4458,4459],{"class":224},"    \u002F\u002F 渲染循环\n",[70,4461,4463,4466,4468,4470,4473],{"class":72,"line":4462},252,[70,4464,4465],{"class":76},"    while",[70,4467,783],{"class":200},[70,4469,1285],{"class":76},[70,4471,4472],{"class":196},"glfwWindowShouldClose",[70,4474,4475],{"class":200},"(window)) {\n",[70,4477,4479],{"class":72,"line":4478},253,[70,4480,4481],{"class":224},"        \u002F\u002F 处理输入\n",[70,4483,4485,4488],{"class":72,"line":4484},254,[70,4486,4487],{"class":196},"        processInput",[70,4489,770],{"class":200},[70,4491,4493,4496],{"class":72,"line":4492},255,[70,4494,4495],{"class":196},"        glfwPollEvents",[70,4497,1053],{"class":200},[70,4499,4501],{"class":72,"line":4500},256,[70,4502,184],{"emptyLinePlaceholder":183},[70,4504,4506],{"class":72,"line":4505},257,[70,4507,4508],{"class":224},"        \u002F\u002F 从 DPI 稳定器获取 view 矩阵\n",[70,4510,4512,4515,4518,4520,4522,4525],{"class":72,"line":4511},258,[70,4513,4514],{"class":196},"        mat4",[70,4516,4517],{"class":200}," view ",[70,4519,309],{"class":76},[70,4521,925],{"class":200},[70,4523,4524],{"class":196},"getViewMatrix",[70,4526,1053],{"class":200},[70,4528,4530],{"class":72,"line":4529},259,[70,4531,1450],{"class":200},[70,4533,4535,4537,4540,4542,4545],{"class":72,"line":4534},260,[70,4536,1502],{"class":76},[70,4538,4539],{"class":200}," currentFrame ",[70,4541,309],{"class":76},[70,4543,4544],{"class":196}," glfwGetTime",[70,4546,1053],{"class":200},[70,4548,4550,4553,4555,4557,4559],{"class":72,"line":4549},261,[70,4551,4552],{"class":200},"        deltaTime ",[70,4554,309],{"class":76},[70,4556,4539],{"class":200},[70,4558,1751],{"class":76},[70,4560,4561],{"class":200}," lastFrame;\n",[70,4563,4565,4568,4570],{"class":72,"line":4564},262,[70,4566,4567],{"class":200},"        lastFrame ",[70,4569,309],{"class":76},[70,4571,4572],{"class":200}," currentFrame;\n",[70,4574,4576],{"class":72,"line":4575},263,[70,4577,184],{"emptyLinePlaceholder":183},[70,4579,4581],{"class":72,"line":4580},264,[70,4582,4583],{"class":224},"        \u002F\u002F 渲染指令\n",[70,4585,4587,4590,4592,4595,4597,4599,4602,4604,4606,4608,4610,4612,4614,4616],{"class":72,"line":4586},265,[70,4588,4589],{"class":196},"        glClearColor",[70,4591,240],{"class":200},[70,4593,4594],{"class":275},"0.2",[70,4596,635],{"class":76},[70,4598,279],{"class":200},[70,4600,4601],{"class":275},"0.3",[70,4603,635],{"class":76},[70,4605,279],{"class":200},[70,4607,4601],{"class":275},[70,4609,635],{"class":76},[70,4611,279],{"class":200},[70,4613,1780],{"class":275},[70,4615,635],{"class":76},[70,4617,427],{"class":200},[70,4619,4621,4624,4627,4630],{"class":72,"line":4620},266,[70,4622,4623],{"class":196},"        glClear",[70,4625,4626],{"class":200},"(GL_COLOR_BUFFER_BIT ",[70,4628,4629],{"class":76},"|",[70,4631,4632],{"class":200}," GL_DEPTH_BUFFER_BIT);\n",[70,4634,4636],{"class":72,"line":4635},267,[70,4637,1450],{"class":200},[70,4639,4641],{"class":72,"line":4640},268,[70,4642,4643],{"class":224},"        \u002F\u002F 使用光照着色器绘制物体\n",[70,4645,4647,4650,4653],{"class":72,"line":4646},269,[70,4648,4649],{"class":200},"        lightingShader.",[70,4651,4652],{"class":196},"use",[70,4654,1053],{"class":200},[70,4656,4658],{"class":72,"line":4657},270,[70,4659,1450],{"class":200},[70,4661,4663],{"class":72,"line":4662},271,[70,4664,4665],{"class":224},"        \u002F\u002F 绑定纹理\n",[70,4667,4669,4672],{"class":72,"line":4668},272,[70,4670,4671],{"class":196},"        glActiveTexture",[70,4673,4674],{"class":200},"(GL_TEXTURE0);\n",[70,4676,4678,4681],{"class":72,"line":4677},273,[70,4679,4680],{"class":196},"        glBindTexture",[70,4682,4683],{"class":200},"(GL_TEXTURE_2D, texture1);\n",[70,4685,4687,4689,4692,4694,4697,4699,4701],{"class":72,"line":4686},274,[70,4688,4649],{"class":200},[70,4690,4691],{"class":196},"setInt",[70,4693,240],{"class":200},[70,4695,4696],{"class":80},"\"material.diffuse\"",[70,4698,279],{"class":200},[70,4700,424],{"class":275},[70,4702,427],{"class":200},[70,4704,4706],{"class":72,"line":4705},275,[70,4707,1450],{"class":200},[70,4709,4711,4713,4716,4718,4721],{"class":72,"line":4710},276,[70,4712,4649],{"class":200},[70,4714,4715],{"class":196},"setMat4",[70,4717,240],{"class":200},[70,4719,4720],{"class":80},"\"projection\"",[70,4722,4723],{"class":200},", projection);\n",[70,4725,4727,4729,4731,4733,4736],{"class":72,"line":4726},277,[70,4728,4649],{"class":200},[70,4730,4715],{"class":196},[70,4732,240],{"class":200},[70,4734,4735],{"class":80},"\"view\"",[70,4737,4738],{"class":200},", view);\n",[70,4740,4742,4744,4747,4749,4752,4754,4756,4758,4760,4762,4764,4766,4768,4770,4772,4774,4776],{"class":72,"line":4741},278,[70,4743,4649],{"class":200},[70,4745,4746],{"class":196},"setVec3",[70,4748,240],{"class":200},[70,4750,4751],{"class":80},"\"light.direction\"",[70,4753,279],{"class":200},[70,4755,1751],{"class":76},[70,4757,4594],{"class":275},[70,4759,635],{"class":76},[70,4761,279],{"class":200},[70,4763,1751],{"class":76},[70,4765,1780],{"class":275},[70,4767,635],{"class":76},[70,4769,279],{"class":200},[70,4771,1751],{"class":76},[70,4773,4601],{"class":275},[70,4775,635],{"class":76},[70,4777,427],{"class":200},[70,4779,4781,4783,4785,4787,4790,4792,4794,4796,4798,4800,4802,4804,4806,4808,4810],{"class":72,"line":4780},279,[70,4782,4649],{"class":200},[70,4784,4746],{"class":196},[70,4786,240],{"class":200},[70,4788,4789],{"class":80},"\"light.ambient\"",[70,4791,1758],{"class":200},[70,4793,1780],{"class":275},[70,4795,635],{"class":76},[70,4797,279],{"class":200},[70,4799,1780],{"class":275},[70,4801,635],{"class":76},[70,4803,279],{"class":200},[70,4805,1780],{"class":275},[70,4807,635],{"class":76},[70,4809,4014],{"class":200},[70,4811,4812],{"class":224},"   \u002F\u002F 最大环境光强度\n",[70,4814,4816,4818,4820,4822,4825,4827,4829,4831,4833,4835,4837,4839,4841,4843,4845],{"class":72,"line":4815},280,[70,4817,4649],{"class":200},[70,4819,4746],{"class":196},[70,4821,240],{"class":200},[70,4823,4824],{"class":80},"\"light.diffuse\"",[70,4826,1758],{"class":200},[70,4828,1780],{"class":275},[70,4830,635],{"class":76},[70,4832,279],{"class":200},[70,4834,1780],{"class":275},[70,4836,635],{"class":76},[70,4838,279],{"class":200},[70,4840,1780],{"class":275},[70,4842,635],{"class":76},[70,4844,4014],{"class":200},[70,4846,4847],{"class":224},"   \u002F\u002F 增加漫反射强度\n",[70,4849,4851,4853,4855,4857,4860,4862,4864,4866,4868,4870,4872,4874,4876,4878],{"class":72,"line":4850},281,[70,4852,4649],{"class":200},[70,4854,4746],{"class":196},[70,4856,240],{"class":200},[70,4858,4859],{"class":80},"\"light.specular\"",[70,4861,279],{"class":200},[70,4863,1780],{"class":275},[70,4865,635],{"class":76},[70,4867,279],{"class":200},[70,4869,1780],{"class":275},[70,4871,635],{"class":76},[70,4873,279],{"class":200},[70,4875,1780],{"class":275},[70,4877,635],{"class":76},[70,4879,4880],{"class":200},"); \n",[70,4882,4884,4886,4888,4890,4893,4895,4898,4900,4902,4905,4907,4909,4911,4913],{"class":72,"line":4883},282,[70,4885,4649],{"class":200},[70,4887,4746],{"class":196},[70,4889,240],{"class":200},[70,4891,4892],{"class":80},"\"material.specular\"",[70,4894,279],{"class":200},[70,4896,4897],{"class":275},"0.633",[70,4899,635],{"class":76},[70,4901,279],{"class":200},[70,4903,4904],{"class":275},"0.727811",[70,4906,635],{"class":76},[70,4908,279],{"class":200},[70,4910,4897],{"class":275},[70,4912,635],{"class":76},[70,4914,427],{"class":200},[70,4916,4918],{"class":72,"line":4917},283,[70,4919,4920],{"class":224},"        \u002F\u002F 高光指数：通常乘以 128 (OpenGL 最大的 1.0 对应 128)\n",[70,4922,4924,4926,4929,4931,4934,4936,4939,4941,4943,4946,4948,4950],{"class":72,"line":4923},284,[70,4925,4649],{"class":200},[70,4927,4928],{"class":196},"setFloat",[70,4930,240],{"class":200},[70,4932,4933],{"class":80},"\"material.shininess\"",[70,4935,279],{"class":200},[70,4937,4938],{"class":275},"0.6",[70,4940,635],{"class":76},[70,4942,746],{"class":76},[70,4944,4945],{"class":275}," 128.0",[70,4947,635],{"class":76},[70,4949,4014],{"class":200},[70,4951,4952],{"class":224}," \u002F\u002F 76.8\n",[70,4954,4956],{"class":72,"line":4955},285,[70,4957,1450],{"class":200},[70,4959,4961],{"class":72,"line":4960},286,[70,4962,4963],{"class":224},"        \u002F\u002F 设置相机位置（观察空间）\n",[70,4965,4967,4970,4973,4975,4977,4979],{"class":72,"line":4966},287,[70,4968,4969],{"class":196},"        vec3",[70,4971,4972],{"class":200}," currentViewPos ",[70,4974,309],{"class":76},[70,4976,925],{"class":200},[70,4978,4446],{"class":196},[70,4980,1053],{"class":200},[70,4982,4984,4986,4988,4990,4993],{"class":72,"line":4983},288,[70,4985,4649],{"class":200},[70,4987,4746],{"class":196},[70,4989,240],{"class":200},[70,4991,4992],{"class":80},"\"viewPos\"",[70,4994,4995],{"class":200},", currentViewPos.x, currentViewPos.y, currentViewPos.z);\n",[70,4997,4999],{"class":72,"line":4998},289,[70,5000,1450],{"class":200},[70,5002,5004,5007],{"class":72,"line":5003},290,[70,5005,5006],{"class":196},"        glBindVertexArray",[70,5008,5009],{"class":200},"(VAO);\n",[70,5011,5013],{"class":72,"line":5012},291,[70,5014,1450],{"class":200},[70,5016,5018],{"class":72,"line":5017},292,[70,5019,5020],{"class":224},"        \u002F\u002F 定义多个立方体的位置（更分散的布局）\n",[70,5022,5024,5027,5029,5032,5035,5037],{"class":72,"line":5023},293,[70,5025,5026],{"class":196},"        glm",[70,5028,1107],{"class":200},[70,5030,5031],{"class":196},"vec3",[70,5033,5034],{"class":200}," cubePositions[] ",[70,5036,309],{"class":76},[70,5038,1718],{"class":200},[70,5040,5042,5045,5047,5049,5052,5054,5056,5058,5060,5062,5064,5066,5068],{"class":72,"line":5041},294,[70,5043,5044],{"class":196},"            glm",[70,5046,1107],{"class":200},[70,5048,5031],{"class":196},[70,5050,5051],{"class":200},"( ",[70,5053,1767],{"class":275},[70,5055,635],{"class":76},[70,5057,1758],{"class":200},[70,5059,1767],{"class":275},[70,5061,635],{"class":76},[70,5063,1758],{"class":200},[70,5065,1767],{"class":275},[70,5067,635],{"class":76},[70,5069,5070],{"class":200},"),\n",[70,5072,5074,5076,5078,5080,5082,5084,5086,5088,5090,5092,5094,5096,5098],{"class":72,"line":5073},295,[70,5075,5044],{"class":196},[70,5077,1107],{"class":200},[70,5079,5031],{"class":196},[70,5081,5051],{"class":200},[70,5083,4416],{"class":275},[70,5085,635],{"class":76},[70,5087,1758],{"class":200},[70,5089,1767],{"class":275},[70,5091,635],{"class":76},[70,5093,1758],{"class":200},[70,5095,1767],{"class":275},[70,5097,635],{"class":76},[70,5099,5070],{"class":200},[70,5101,5103,5105,5107,5109,5111,5113,5115,5117,5119,5121,5123,5125,5127,5129],{"class":72,"line":5102},296,[70,5104,5044],{"class":196},[70,5106,1107],{"class":200},[70,5108,5031],{"class":196},[70,5110,240],{"class":200},[70,5112,1751],{"class":76},[70,5114,4416],{"class":275},[70,5116,635],{"class":76},[70,5118,1758],{"class":200},[70,5120,1767],{"class":275},[70,5122,635],{"class":76},[70,5124,1758],{"class":200},[70,5126,1767],{"class":275},[70,5128,635],{"class":76},[70,5130,5070],{"class":200},[70,5132,5134,5136,5138,5140,5142,5144,5146,5148,5150,5152,5154,5156,5158,5160],{"class":72,"line":5133},297,[70,5135,5044],{"class":196},[70,5137,1107],{"class":200},[70,5139,5031],{"class":196},[70,5141,5051],{"class":200},[70,5143,1767],{"class":275},[70,5145,635],{"class":76},[70,5147,1758],{"class":200},[70,5149,1767],{"class":275},[70,5151,635],{"class":76},[70,5153,279],{"class":200},[70,5155,1751],{"class":76},[70,5157,4416],{"class":275},[70,5159,635],{"class":76},[70,5161,5070],{"class":200},[70,5163,5165,5167,5169,5171,5173,5175,5177,5179,5181,5183,5185,5187,5189],{"class":72,"line":5164},298,[70,5166,5044],{"class":196},[70,5168,1107],{"class":200},[70,5170,5031],{"class":196},[70,5172,5051],{"class":200},[70,5174,1767],{"class":275},[70,5176,635],{"class":76},[70,5178,1758],{"class":200},[70,5180,1767],{"class":275},[70,5182,635],{"class":76},[70,5184,1758],{"class":200},[70,5186,4416],{"class":275},[70,5188,635],{"class":76},[70,5190,5070],{"class":200},[70,5192,5194,5196,5198,5200,5202,5204,5206,5208,5210,5212,5214,5216,5218,5220],{"class":72,"line":5193},299,[70,5195,5044],{"class":196},[70,5197,1107],{"class":200},[70,5199,5031],{"class":196},[70,5201,5051],{"class":200},[70,5203,4416],{"class":275},[70,5205,635],{"class":76},[70,5207,1758],{"class":200},[70,5209,1767],{"class":275},[70,5211,635],{"class":76},[70,5213,279],{"class":200},[70,5215,1751],{"class":76},[70,5217,4416],{"class":275},[70,5219,635],{"class":76},[70,5221,5070],{"class":200},[70,5223,5225,5227,5229,5231,5233,5235,5237,5239,5241,5243,5245,5247,5249,5251,5253],{"class":72,"line":5224},300,[70,5226,5044],{"class":196},[70,5228,1107],{"class":200},[70,5230,5031],{"class":196},[70,5232,240],{"class":200},[70,5234,1751],{"class":76},[70,5236,4416],{"class":275},[70,5238,635],{"class":76},[70,5240,1758],{"class":200},[70,5242,1767],{"class":275},[70,5244,635],{"class":76},[70,5246,279],{"class":200},[70,5248,1751],{"class":76},[70,5250,4416],{"class":275},[70,5252,635],{"class":76},[70,5254,5070],{"class":200},[70,5256,5258,5260,5262,5264,5266,5268,5270,5272,5274,5276,5278,5280,5282],{"class":72,"line":5257},301,[70,5259,5044],{"class":196},[70,5261,1107],{"class":200},[70,5263,5031],{"class":196},[70,5265,5051],{"class":200},[70,5267,4416],{"class":275},[70,5269,635],{"class":76},[70,5271,1758],{"class":200},[70,5273,1767],{"class":275},[70,5275,635],{"class":76},[70,5277,1758],{"class":200},[70,5279,4416],{"class":275},[70,5281,635],{"class":76},[70,5283,5070],{"class":200},[70,5285,5287,5289,5291,5293,5295,5297,5299,5301,5303,5305,5307,5309,5311,5313],{"class":72,"line":5286},302,[70,5288,5044],{"class":196},[70,5290,1107],{"class":200},[70,5292,5031],{"class":196},[70,5294,240],{"class":200},[70,5296,1751],{"class":76},[70,5298,4416],{"class":275},[70,5300,635],{"class":76},[70,5302,1758],{"class":200},[70,5304,1767],{"class":275},[70,5306,635],{"class":76},[70,5308,1758],{"class":200},[70,5310,4416],{"class":275},[70,5312,635],{"class":76},[70,5314,5070],{"class":200},[70,5316,5318,5320,5322,5324,5326,5328,5330,5332,5334,5336,5338,5340,5342],{"class":72,"line":5317},303,[70,5319,5044],{"class":196},[70,5321,1107],{"class":200},[70,5323,5031],{"class":196},[70,5325,5051],{"class":200},[70,5327,1767],{"class":275},[70,5329,635],{"class":76},[70,5331,1758],{"class":200},[70,5333,4416],{"class":275},[70,5335,635],{"class":76},[70,5337,1758],{"class":200},[70,5339,1767],{"class":275},[70,5341,635],{"class":76},[70,5343,5344],{"class":200},")\n",[70,5346,5348],{"class":72,"line":5347},304,[70,5349,5350],{"class":200},"        };\n",[70,5352,5354],{"class":72,"line":5353},305,[70,5355,1450],{"class":200},[70,5357,5359,5362,5364,5366,5368,5371,5373,5375,5378,5381,5384,5387,5390],{"class":72,"line":5358},306,[70,5360,5361],{"class":76},"        for",[70,5363,240],{"class":200},[70,5365,231],{"class":76},[70,5367,234],{"class":76},[70,5369,5370],{"class":200}," i ",[70,5372,309],{"class":76},[70,5374,4254],{"class":275},[70,5376,5377],{"class":200},"; i ",[70,5379,5380],{"class":76},"\u003C",[70,5382,5383],{"class":275}," 10",[70,5385,5386],{"class":200},"; i",[70,5388,5389],{"class":76},"++",[70,5391,5344],{"class":200},[70,5393,5395],{"class":72,"line":5394},307,[70,5396,5397],{"class":200},"        {\n",[70,5399,5401,5403,5405,5408,5411,5413,5415,5417,5419,5421,5423,5425],{"class":72,"line":5400},308,[70,5402,5044],{"class":196},[70,5404,1107],{"class":200},[70,5406,5407],{"class":196},"mat4",[70,5409,5410],{"class":200}," model ",[70,5412,309],{"class":76},[70,5414,197],{"class":196},[70,5416,1107],{"class":200},[70,5418,5407],{"class":196},[70,5420,240],{"class":200},[70,5422,1780],{"class":275},[70,5424,635],{"class":76},[70,5426,427],{"class":200},[70,5428,5430,5433,5435,5437,5439,5442],{"class":72,"line":5429},309,[70,5431,5432],{"class":200},"            model ",[70,5434,309],{"class":76},[70,5436,197],{"class":196},[70,5438,1107],{"class":200},[70,5440,5441],{"class":196},"translate",[70,5443,5444],{"class":200},"(model, cubePositions[i]);\n",[70,5446,5448,5451,5454,5456,5459,5461,5463],{"class":72,"line":5447},310,[70,5449,5450],{"class":76},"            float",[70,5452,5453],{"class":200}," angle ",[70,5455,309],{"class":76},[70,5457,5458],{"class":275}," 20.0",[70,5460,635],{"class":76},[70,5462,746],{"class":76},[70,5464,5465],{"class":200}," i;\n",[70,5467,5469,5471,5473,5475,5477,5480,5483,5486,5488,5490,5493,5495,5497,5499,5501,5503,5505,5507,5509,5511,5513,5515,5517],{"class":72,"line":5468},311,[70,5470,5432],{"class":200},[70,5472,309],{"class":76},[70,5474,197],{"class":196},[70,5476,1107],{"class":200},[70,5478,5479],{"class":196},"rotate",[70,5481,5482],{"class":200},"(model, ",[70,5484,5485],{"class":196},"glm",[70,5487,1107],{"class":200},[70,5489,988],{"class":196},[70,5491,5492],{"class":200},"(angle), ",[70,5494,5485],{"class":196},[70,5496,1107],{"class":200},[70,5498,5031],{"class":196},[70,5500,240],{"class":200},[70,5502,1780],{"class":275},[70,5504,635],{"class":76},[70,5506,279],{"class":200},[70,5508,4601],{"class":275},[70,5510,635],{"class":76},[70,5512,279],{"class":200},[70,5514,1549],{"class":275},[70,5516,635],{"class":76},[70,5518,5519],{"class":200},"));\n",[70,5521,5523,5526,5528,5530,5533],{"class":72,"line":5522},312,[70,5524,5525],{"class":200},"            lightingShader.",[70,5527,4715],{"class":196},[70,5529,240],{"class":200},[70,5531,5532],{"class":80},"\"model\"",[70,5534,5535],{"class":200},", model);\n",[70,5537,5539],{"class":72,"line":5538},313,[70,5540,184],{"emptyLinePlaceholder":183},[70,5542,5544,5547,5550,5552,5554,5557],{"class":72,"line":5543},314,[70,5545,5546],{"class":196},"            glDrawArrays",[70,5548,5549],{"class":200},"(GL_TRIANGLES, ",[70,5551,424],{"class":275},[70,5553,279],{"class":200},[70,5555,5556],{"class":275},"36",[70,5558,427],{"class":200},[70,5560,5562],{"class":72,"line":5561},315,[70,5563,1491],{"class":200},[70,5565,5567],{"class":72,"line":5566},316,[70,5568,1450],{"class":200},[70,5570,5572],{"class":72,"line":5571},317,[70,5573,5574],{"class":224},"        \u002F\u002F 绘制光源立方体（平行光不需要光源立方体，已注释）\n",[70,5576,5578],{"class":72,"line":5577},318,[70,5579,5580],{"class":224},"        \u002F*\n",[70,5582,5584],{"class":72,"line":5583},319,[70,5585,5586],{"class":224},"        lampShader.use();\n",[70,5588,5590],{"class":72,"line":5589},320,[70,5591,5592],{"class":224},"        lampShader.setMat4(\"projection\", projection);\n",[70,5594,5596],{"class":72,"line":5595},321,[70,5597,5598],{"class":224},"        lampShader.setMat4(\"view\", view);\n",[70,5600,5602],{"class":72,"line":5601},322,[70,5603,1450],{"class":224},[70,5605,5607],{"class":72,"line":5606},323,[70,5608,5609],{"class":224},"        \u002F\u002F 光源立方体的模型矩阵\n",[70,5611,5613],{"class":72,"line":5612},324,[70,5614,5615],{"class":224},"        mat4 lampModel = mat4(1.0f);\n",[70,5617,5619],{"class":72,"line":5618},325,[70,5620,5621],{"class":224},"        lampModel = translate(lampModel, lightPos);\n",[70,5623,5625],{"class":72,"line":5624},326,[70,5626,5627],{"class":224},"        lampModel = scale(lampModel, vec3(0.2f)); \u002F\u002F 缩小光源立方体\n",[70,5629,5631],{"class":72,"line":5630},327,[70,5632,5633],{"class":224},"        lampShader.setMat4(\"model\", lampModel);\n",[70,5635,5637],{"class":72,"line":5636},328,[70,5638,1450],{"class":224},[70,5640,5642],{"class":72,"line":5641},329,[70,5643,5644],{"class":224},"        glBindVertexArray(lightVAO);\n",[70,5646,5648],{"class":72,"line":5647},330,[70,5649,5650],{"class":224},"        glDrawArrays(GL_TRIANGLES, 0, 36);\n",[70,5652,5654],{"class":72,"line":5653},331,[70,5655,5656],{"class":224},"        *\u002F\n",[70,5658,5660],{"class":72,"line":5659},332,[70,5661,1450],{"class":200},[70,5663,5665],{"class":72,"line":5664},333,[70,5666,5667],{"class":224},"        \u002F\u002F 使用 ImGui 管理器渲染所有窗口\n",[70,5669,5671,5673,5676],{"class":72,"line":5670},334,[70,5672,801],{"class":200},[70,5674,5675],{"class":196},"render",[70,5677,1053],{"class":200},[70,5679,5681],{"class":72,"line":5680},335,[70,5682,184],{"emptyLinePlaceholder":183},[70,5684,5686],{"class":72,"line":5685},336,[70,5687,5688],{"class":224},"        \u002F\u002F 交换缓冲区和检查IO事件\n",[70,5690,5692,5695],{"class":72,"line":5691},337,[70,5693,5694],{"class":196},"        glfwSwapBuffers",[70,5696,770],{"class":200},[70,5698,5700],{"class":72,"line":5699},338,[70,5701,373],{"class":200},[70,5703,5705],{"class":72,"line":5704},339,[70,5706,184],{"emptyLinePlaceholder":183},[70,5708,5710],{"class":72,"line":5709},340,[70,5711,5712],{"class":224},"    \u002F\u002F 清理 ImGui 管理器\n",[70,5714,5716,5718,5721],{"class":72,"line":5715},341,[70,5717,1342],{"class":200},[70,5719,5720],{"class":196},"shutdown",[70,5722,1053],{"class":200},[70,5724,5726],{"class":72,"line":5725},342,[70,5727,184],{"emptyLinePlaceholder":183},[70,5729,5731],{"class":72,"line":5730},343,[70,5732,5733],{"class":224},"    \u002F\u002F 清理资源\n",[70,5735,5737,5740,5742,5744,5746,5748],{"class":72,"line":5736},344,[70,5738,5739],{"class":196},"    glDeleteVertexArrays",[70,5741,240],{"class":200},[70,5743,276],{"class":275},[70,5745,279],{"class":200},[70,5747,282],{"class":76},[70,5749,3821],{"class":200},[70,5751,5753,5755,5757,5759,5761,5763],{"class":72,"line":5752},345,[70,5754,5739],{"class":196},[70,5756,240],{"class":200},[70,5758,276],{"class":275},[70,5760,279],{"class":200},[70,5762,282],{"class":76},[70,5764,4316],{"class":200},[70,5766,5768,5771,5773,5775,5777,5779],{"class":72,"line":5767},346,[70,5769,5770],{"class":196},"    glDeleteBuffers",[70,5772,240],{"class":200},[70,5774,276],{"class":275},[70,5776,279],{"class":200},[70,5778,282],{"class":76},[70,5780,3871],{"class":200},[70,5782,5784,5787,5789,5791,5793,5795],{"class":72,"line":5783},347,[70,5785,5786],{"class":196},"    glDeleteTextures",[70,5788,240],{"class":200},[70,5790,276],{"class":275},[70,5792,279],{"class":200},[70,5794,282],{"class":76},[70,5796,5797],{"class":200},"texture1);\n",[70,5799,5801,5804],{"class":72,"line":5800},348,[70,5802,5803],{"class":196},"    glfwTerminate",[70,5805,1053],{"class":200},[70,5807,5809,5811,5813],{"class":72,"line":5808},349,[70,5810,524],{"class":76},[70,5812,4254],{"class":275},[70,5814,201],{"class":200},[70,5816,5818],{"class":72,"line":5817},350,[70,5819,532],{"class":200},[13,5821,5822],{},"先来来看看点光源： 我们需要一个衰减公式来表示光线随着距离增加而减小。",[13,5824,5825,5826,5829],{},"下面这个公式根据片段距光源的距离计算了衰减值，",[17,5827,5828],{},"之后我们会将它乘以光的强度向量","：",[13,5831,5832],{},[27,5833],{"alt":5834,"src":5835},"image-20251029202203628",".\u002Fassets\u002Fimage-20251029202203628.png",[13,5837,5838,5839,5842,5843],{},"在这里",[17,5840,5841],{},"d代表了片段距光源的距离","。接下来为了计算衰减值，",[17,5844,5845],{},"我们定义3个（可配置的）项：常数项Kc、一次项Kl和二次项Kq。",[5847,5848,5849,5853,5856],"ul",{},[5850,5851,5852],"li",{},"常数项通常保持为1.0，它的主要作用是保证分母永远不会比1小，否则的话在某些距离上它反而会增加强度，这肯定不是我们想要的效果。",[5850,5854,5855],{},"一次项会与距离值相乘，以线性的方式减少强度。",[5850,5857,5858],{},"二次项会与距离的平方相乘，让光源以二次递减的方式减少强度。二次项在距离比较小的时候影响会比一次项小很多，但当距离值比较大的时候它就会比一次项更大了。",[13,5860,5861],{},"由于二次项的存在，光线会在大部分时候以线性的方式衰退，直到距离变得足够大，让二次项超过一次项，光的强度会以更快的速度下降。这样的结果就是，光在近距离时亮度很高，但随着距离变远亮度迅速降低，最后会以更慢的速度减少亮度。下面这张图显示了在100的距离内衰减的效果：",[13,5863,5864],{},[27,5865],{"alt":5866,"src":5867},"image-20251029202400723",".\u002Fassets\u002Fimage-20251029202400723.png",[13,5869,5870],{},"你可以看到光在近距离的时候有着最高的强度，但随着距离增长，它的强度明显减弱，并缓慢地在距离大约100的时候强度接近0。这正是我们想要的。",[5872,5873,5874],"h3",{"id":5874},"选择正确的值",[13,5876,5877,5878,5881,5882,5889],{},"但是，该对这三个项设置什么值呢？正确地设定它们的值取决于很多因素：环境、希望光覆盖的距离、光的类型等。在大多数情况下，这都是经验的问题，以及适量的调整。下面这个表格显示了模拟一个（大概）真实的，覆盖特定半径（距离）的光源时，这些项可能取的一些值。",[17,5879,5880],{},"第一列指定的是在给定的三项时光所能覆盖的距离","。这些值是大多数光源很好的起始点，它们由",[5883,5884,5888],"a",{"href":5885,"rel":5886},"http:\u002F\u002Fwww.ogre3d.org\u002Ftikiwiki\u002Ftiki-index.php?page=-Point+Light+Attenuation",[5887],"nofollow","Ogre3D的Wiki","所提供：",[5891,5892,5893,5913],"table",{},[5894,5895,5896],"thead",{},[5897,5898,5899,5904,5907,5910],"tr",{},[5900,5901,5903],"th",{"align":5902},"left","距离",[5900,5905,5906],{"align":5902},"常数项",[5900,5908,5909],{"align":5902},"一次项",[5900,5911,5912],{"align":5902},"二次项",[5914,5915,5916,5930,5943,5956,5969,5982,5994,6007,6020,6033,6046,6058],"tbody",{},[5897,5917,5918,5922,5924,5927],{},[5919,5920,5921],"td",{"align":5902},"7",[5919,5923,1780],{"align":5902},[5919,5925,5926],{"align":5902},"0.7",[5919,5928,5929],{"align":5902},"1.8",[5897,5931,5932,5935,5937,5940],{},[5919,5933,5934],{"align":5902},"13",[5919,5936,1780],{"align":5902},[5919,5938,5939],{"align":5902},"0.35",[5919,5941,5942],{"align":5902},"0.44",[5897,5944,5945,5948,5950,5953],{},[5919,5946,5947],{"align":5902},"20",[5919,5949,1780],{"align":5902},[5919,5951,5952],{"align":5902},"0.22",[5919,5954,5955],{"align":5902},"0.20",[5897,5957,5958,5961,5963,5966],{},[5919,5959,5960],{"align":5902},"32",[5919,5962,1780],{"align":5902},[5919,5964,5965],{"align":5902},"0.14",[5919,5967,5968],{"align":5902},"0.07",[5897,5970,5971,5974,5976,5979],{},[5919,5972,5973],{"align":5902},"50",[5919,5975,1780],{"align":5902},[5919,5977,5978],{"align":5902},"0.09",[5919,5980,5981],{"align":5902},"0.032",[5897,5983,5984,5987,5989,5991],{},[5919,5985,5986],{"align":5902},"65",[5919,5988,1780],{"align":5902},[5919,5990,5968],{"align":5902},[5919,5992,5993],{"align":5902},"0.017",[5897,5995,5996,5999,6001,6004],{},[5919,5997,5998],{"align":5902},"100",[5919,6000,1780],{"align":5902},[5919,6002,6003],{"align":5902},"0.045",[5919,6005,6006],{"align":5902},"0.0075",[5897,6008,6009,6012,6014,6017],{},[5919,6010,6011],{"align":5902},"160",[5919,6013,1780],{"align":5902},[5919,6015,6016],{"align":5902},"0.027",[5919,6018,6019],{"align":5902},"0.0028",[5897,6021,6022,6025,6027,6030],{},[5919,6023,6024],{"align":5902},"200",[5919,6026,1780],{"align":5902},[5919,6028,6029],{"align":5902},"0.022",[5919,6031,6032],{"align":5902},"0.0019",[5897,6034,6035,6038,6040,6043],{},[5919,6036,6037],{"align":5902},"325",[5919,6039,1780],{"align":5902},[5919,6041,6042],{"align":5902},"0.014",[5919,6044,6045],{"align":5902},"0.0007",[5897,6047,6048,6050,6052,6055],{},[5919,6049,1018],{"align":5902},[5919,6051,1780],{"align":5902},[5919,6053,6054],{"align":5902},"0.007",[5919,6056,6057],{"align":5902},"0.0002",[5897,6059,6060,6063,6065,6068],{},[5919,6061,6062],{"align":5902},"3250",[5919,6064,1780],{"align":5902},[5919,6066,6067],{"align":5902},"0.0014",[5919,6069,6070],{"align":5902},"0.000007",[13,6072,6073],{},"你可以看到，常数项Kc在所有的情况下都是1.0。一次项Kl为了覆盖更远的距离通常都很小，二次项Kq甚至更小。尝试对这些值进行实验，看看它们在你的实现中有什么效果。在我们的环境中，32到100的距离对大多数的光源都足够了。",[13,6075,6076],{},"下面完整代码：",[60,6078,6080],{"className":62,"code":6079,"language":64,"meta":65,"style":65},"#include \u003Cglad\u002Fglad.h>\n#include \u003CGLFW\u002Fglfw3.h>\n#include \u003Ciostream>\n#include \u003Ccmath>\n#include \u003Cimgui.h>\n#include \u003Cimgui_impl_glfw.h>\n#include \u003Cimgui_impl_opengl3.h>\n#include \u003Copencv2\u002Fopencv.hpp>\n#include \u003Copencv2\u002Fimgcodecs.hpp>\n#include \"utils\u002Fshader.h\"\n#include \"utils\u002FglmCompute.h\"\n#include \"include\u002Fdpi_stabilizer.h\"\n#include \"include\u002Fimgui_manager.h\"\n\nusing namespace glm;\nusing namespace cv;\n\n\u002F\u002F 使用 OpenCV 加载纹理\nunsigned int loadTexture(const char* path) {\n    unsigned int textureID;\n    glGenTextures(1, &textureID);\n    \n    \u002F\u002F 使用 OpenCV 读取图像\n    Mat image = imread(path, IMREAD_COLOR);\n    if (image.empty()) {\n        std::cout \u003C\u003C \"Failed to load texture at path: \" \u003C\u003C path \u003C\u003C std::endl;\n        return textureID;\n    }\n    \n    \u002F\u002F OpenCV 使用 BGR，OpenGL 使用 RGB，需要转换\n    Mat rgbImage;\n    cvtColor(image, rgbImage, COLOR_BGR2RGB);\n    \n    \u002F\u002F 翻转图像（OpenGL 期望的 Y 轴方向）\n    flip(rgbImage, rgbImage, 0);\n    \n    glBindTexture(GL_TEXTURE_2D, textureID);\n    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, rgbImage.cols, rgbImage.rows, 0, GL_RGB, GL_UNSIGNED_BYTE, rgbImage.data);\n    glGenerateMipmap(GL_TEXTURE_2D);\n    \n    \u002F\u002F 设置纹理参数\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);\n    \n    return textureID;\n}\n\n\u002F\u002F 窗口大小改变时的回调函数\nvoid framebuffer_size_callback(GLFWwindow* window, int width, int height) {\n    glViewport(0, 0, width, height);\n}\n\n\n\u002F\u002F 全局变量\nfloat deltaTime = 0.0f; \u002F\u002F 当前帧与上一帧的时间差\nfloat lastFrame = 0.0f; \u002F\u002F 上一帧的时间\n\n\u002F\u002F DPI 稳定器实例\nDPIStabilizer dpiStabilizer(0.1f, 50.0f, 0.8f);\n\n\u002F\u002F ImGui 管理器实例\nImGuiManager imguiManager;\n\n\u002F\u002F 简化的输入处理函数\nvoid processInput(GLFWwindow *window){\n    \u002F\u002F 使用 DPI 稳定器处理所有输入\n    dpiStabilizer.processKeyboardInput(window);\n\n    if (glfwGetKey(window, GLFW_KEY_F2) == GLFW_PRESS) {\n        imguiManager.toggleWindow(\"控制面板\");\n    }\n    if (glfwGetKey(window, GLFW_KEY_F3) == GLFW_PRESS) {\n        imguiManager.toggleWindow(\"性能监控\");\n    }\n    if (glfwGetKey(window, GLFW_KEY_F4) == GLFW_PRESS) {\n        imguiManager.toggleWindow(\"调试信息\");\n    }\n    \n    \u002F\u002F 显示统计信息 (按 T 键)\n    if (glfwGetKey(window, GLFW_KEY_T) == GLFW_PRESS) {\n        std::cout \u003C\u003C dpiStabilizer.getStats() \u003C\u003C std::endl;\n    }\n}\n\nint main() {\n    \u002F\u002F 投影矩阵\n    mat4 projection = perspective(radians(45.0f), (float)800 \u002F (float)600, 0.1f, 100.0f);\n\n    \u002F\u002F 初始化GLFW\n    glfwInit();\n    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);\n    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);\n    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);\n    \n    \u002F\u002F 设置 DPI 感知提示\n    DPIStabilizer::setDPIHint();\n\n    \u002F\u002F 创建窗口\n    GLFWwindow* window = glfwCreateWindow(800, 600, \"OpenGL Window\", NULL, NULL);\n    if (window == NULL) {\n        std::cout \u003C\u003C \"Failed to create GLFW window\" \u003C\u003C std::endl;\n        glfwTerminate();\n        return -1;\n    }\n\n    glfwMakeContextCurrent(window);\n    glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);\n    \n    \u002F\u002F 初始化 DPI 稳定器\n    dpiStabilizer.initialize(window);\n\n    \u002F\u002F 初始化GLAD\n    if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {\n        std::cout \u003C\u003C \"Failed to initialize GLAD\" \u003C\u003C std::endl;\n        return -1;\n    }\n\n    \u002F\u002F 初始化 ImGui 管理器\n    imguiManager.initialize(window);\n    \n    \u002F\u002F 注册窗口\n    imguiManager.registerWindow(\"Hello ImGui!\", []() {\n        ImGui::Text(\"DPI 稳定器状态: %s\", dpiStabilizer.isMouseCaptured() ? \"已捕获\" : \"已释放\");\n        ImGui::Text(\"鼠标敏感度: %.3f\", dpiStabilizer.getSensitivity());\n        \n        if (ImGui::Button(\"重置统计\")) {\n            dpiStabilizer.resetStats();\n        }\n        \n        float sensitivity = dpiStabilizer.getSensitivity();\n        if (ImGui::SliderFloat(\"鼠标敏感度\", &sensitivity, 0.01f, 0.5f)) {\n            dpiStabilizer.setSensitivity(sensitivity);\n        }\n    });\n    \n    imguiManager.registerWindow(\"控制面板\", []() {\n        ImGuiIO& io = ImGui::GetIO();\n        ImGui::Text(\"FPS: %.1f\", io.Framerate);\n        ImGui::Text(\"帧时间: %.3f ms\", 1000.0f \u002F io.Framerate);\n    });\n    \n\n    \u002F\u002F 启用深度测试\n    glEnable(GL_DEPTH_TEST);\n\n    float vertices[] = {\n    \u002F\u002F 立方体顶点数据（位置 + 法线 + 纹理坐标）\n    \u002F\u002F 位置(3) + 法线(3) + 纹理坐标(2) = 8个浮点数\n    \u002F\u002F 前面\n    -0.5f, -0.5f,  0.5f,  0.0f,  0.0f,  1.0f,  0.0f, 0.0f,\n     0.5f, -0.5f,  0.5f,  0.0f,  0.0f,  1.0f,  1.0f, 0.0f,\n     0.5f,  0.5f,  0.5f,  0.0f,  0.0f,  1.0f,  1.0f, 1.0f,\n     0.5f,  0.5f,  0.5f,  0.0f,  0.0f,  1.0f,  1.0f, 1.0f,\n    -0.5f,  0.5f,  0.5f,  0.0f,  0.0f,  1.0f,  0.0f, 1.0f,\n    -0.5f, -0.5f,  0.5f,  0.0f,  0.0f,  1.0f,  0.0f, 0.0f,\n    \n    \u002F\u002F 后面\n    -0.5f, -0.5f, -0.5f,  0.0f,  0.0f, -1.0f,  0.0f, 0.0f,\n     0.5f, -0.5f, -0.5f,  0.0f,  0.0f, -1.0f,  1.0f, 0.0f,\n     0.5f,  0.5f, -0.5f,  0.0f,  0.0f, -1.0f,  1.0f, 1.0f,\n     0.5f,  0.5f, -0.5f,  0.0f,  0.0f, -1.0f,  1.0f, 1.0f,\n    -0.5f,  0.5f, -0.5f,  0.0f,  0.0f, -1.0f,  0.0f, 1.0f,\n    -0.5f, -0.5f, -0.5f,  0.0f,  0.0f, -1.0f,  0.0f, 0.0f,\n    \n    \u002F\u002F 左面\n    -0.5f,  0.5f,  0.5f, -1.0f,  0.0f,  0.0f,  1.0f, 0.0f,\n    -0.5f,  0.5f, -0.5f, -1.0f,  0.0f,  0.0f,  1.0f, 1.0f,\n    -0.5f, -0.5f, -0.5f, -1.0f,  0.0f,  0.0f,  0.0f, 1.0f,\n    -0.5f, -0.5f, -0.5f, -1.0f,  0.0f,  0.0f,  0.0f, 1.0f,\n    -0.5f, -0.5f,  0.5f, -1.0f,  0.0f,  0.0f,  0.0f, 0.0f,\n    -0.5f,  0.5f,  0.5f, -1.0f,  0.0f,  0.0f,  1.0f, 0.0f,\n    \n    \u002F\u002F 右面\n     0.5f,  0.5f,  0.5f,  1.0f,  0.0f,  0.0f,  1.0f, 0.0f,\n     0.5f,  0.5f, -0.5f,  1.0f,  0.0f,  0.0f,  1.0f, 1.0f,\n     0.5f, -0.5f, -0.5f,  1.0f,  0.0f,  0.0f,  0.0f, 1.0f,\n     0.5f, -0.5f, -0.5f,  1.0f,  0.0f,  0.0f,  0.0f, 1.0f,\n     0.5f, -0.5f,  0.5f,  1.0f,  0.0f,  0.0f,  0.0f, 0.0f,\n     0.5f,  0.5f,  0.5f,  1.0f,  0.0f,  0.0f,  1.0f, 0.0f,\n    \n    \u002F\u002F 下面\n    -0.5f, -0.5f, -0.5f,  0.0f, -1.0f,  0.0f,  0.0f, 1.0f,\n     0.5f, -0.5f, -0.5f,  0.0f, -1.0f,  0.0f,  1.0f, 1.0f,\n     0.5f, -0.5f,  0.5f,  0.0f, -1.0f,  0.0f,  1.0f, 0.0f,\n     0.5f, -0.5f,  0.5f,  0.0f, -1.0f,  0.0f,  1.0f, 0.0f,\n    -0.5f, -0.5f,  0.5f,  0.0f, -1.0f,  0.0f,  0.0f, 0.0f,\n    -0.5f, -0.5f, -0.5f,  0.0f, -1.0f,  0.0f,  0.0f, 1.0f,\n    \n    \u002F\u002F 上面\n    -0.5f,  0.5f, -0.5f,  0.0f,  1.0f,  0.0f,  0.0f, 1.0f,\n     0.5f,  0.5f, -0.5f,  0.0f,  1.0f,  0.0f,  1.0f, 1.0f,\n     0.5f,  0.5f,  0.5f,  0.0f,  1.0f,  0.0f,  1.0f, 0.0f,\n     0.5f,  0.5f,  0.5f,  0.0f,  1.0f,  0.0f,  1.0f, 0.0f,\n    -0.5f,  0.5f,  0.5f,  0.0f,  1.0f,  0.0f,  0.0f, 0.0f,\n    -0.5f,  0.5f, -0.5f,  0.0f,  1.0f,  0.0f,  0.0f, 1.0f\n};\n    \n    \u002F\u002F 创建VAO\n    unsigned int VAO;\n    glGenVertexArrays(1, &VAO);\n    glBindVertexArray(VAO); \u002F\u002F 绑定VAO\n\n    \u002F\u002F 创建VBO\n    unsigned int VBO;\n    glGenBuffers(1, &VBO);\n    glBindBuffer(GL_ARRAY_BUFFER, VBO); \u002F\u002F 绑定VBO\n    glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);\n\n    int nrAttributes;\n    glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &nrAttributes);\n    std::cout \u003C\u003C \"Maximum nr of vertex attributes supported: \" \u003C\u003C nrAttributes \u003C\u003C std::endl;\n\n    \u002F\u002F 位置属性\n    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)0);\n    glEnableVertexAttribArray(0); \u002F\u002F 启用顶点属性\n    \n    \u002F\u002F 法线属性\n    glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(3 * sizeof(float)));\n    glEnableVertexAttribArray(1); \u002F\u002F 启用法线属性\n    \n    \u002F\u002F 纹理坐标属性\n    glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(6 * sizeof(float)));\n    glEnableVertexAttribArray(2); \u002F\u002F 启用纹理坐标属性\n\n    \u002F\u002F 构建并编译着色器程序\n    Shader lightingShader(\"shader\u002Flighting.vert\", \"shader\u002Flighting.frag\");\n    Shader lampShader(\"shader\u002Flamp.vert\", \"shader\u002Flamp.frag\");\n\n    \u002F\u002F 加载纹理\n    unsigned int texture1 = loadTexture(\"Assets\u002Fimage.png\");\n    if (texture1 == 0) {\n        std::cout \u003C\u003C \"Failed to load texture\" \u003C\u003C std::endl;\n    }\n\n    \u002F\u002F 创建光源的 VAO\n    unsigned int lightVAO;\n    glGenVertexArrays(1, &lightVAO);\n    glBindVertexArray(lightVAO);\n    glBindBuffer(GL_ARRAY_BUFFER, VBO);\n    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)0);\n    glEnableVertexAttribArray(0);\n\n    \u002F\u002F 光源位置\n    vec3 lightPos(1.2f, 1.0f, 2.0f);\n    \n    \u002F\u002F 相机位置（观察空间）\n    vec3 viewPos = dpiStabilizer.getCameraPosition();\n\n    \u002F\u002F 渲染循环\n    while (!glfwWindowShouldClose(window)) {\n        \u002F\u002F 处理输入\n        processInput(window);\n        glfwPollEvents();\n\n        \u002F\u002F 从 DPI 稳定器获取 view 矩阵\n        mat4 view = dpiStabilizer.getViewMatrix();\n        \n        float currentFrame = glfwGetTime();\n        deltaTime = currentFrame - lastFrame;\n        lastFrame = currentFrame;\n\n        \u002F\u002F 渲染指令\n        glClearColor(0.2f, 0.3f, 0.3f, 1.0f);\n        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);\n        \n        \u002F\u002F 使用光照着色器绘制物体\n        lightingShader.use();\n        \n        \u002F\u002F 绑定纹理\n        glActiveTexture(GL_TEXTURE0);\n        glBindTexture(GL_TEXTURE_2D, texture1);\n        lightingShader.setInt(\"material.diffuse\", 0);\n        \n        lightingShader.setMat4(\"projection\", projection);\n        lightingShader.setMat4(\"view\", view);\n        lightingShader.setVec3(\"light.position\", lightPos.x, lightPos.y, lightPos.z);\n        lightingShader.setFloat(\"light.constant\", 1.0f);\n        lightingShader.setFloat(\"light.linear\", 0.09f);\n        lightingShader.setFloat(\"light.quadratic\", 0.032f);\n        lightingShader.setVec3(\"light.ambient\",  1.0f, 1.0f, 1.0f);   \u002F\u002F 最大环境光强度\n        lightingShader.setVec3(\"light.diffuse\",  1.0f, 1.0f, 1.0f);   \u002F\u002F 增加漫反射强度\n        lightingShader.setVec3(\"light.specular\", 1.0f, 1.0f, 1.0f); \n        lightingShader.setVec3(\"material.specular\", 0.633f, 0.727811f, 0.633f);\n        \u002F\u002F 高光指数：通常乘以 128 (OpenGL 最大的 1.0 对应 128)\n        lightingShader.setFloat(\"material.shininess\", 0.6f * 128.0f); \u002F\u002F 76.8\n        \n        \u002F\u002F 设置相机位置（观察空间）\n        vec3 currentViewPos = dpiStabilizer.getCameraPosition();\n        lightingShader.setVec3(\"viewPos\", currentViewPos.x, currentViewPos.y, currentViewPos.z);\n        \n        glBindVertexArray(VAO);\n        \n        \u002F\u002F 定义多个立方体的位置（更分散的布局）\n        glm::vec3 cubePositions[] = {\n            glm::vec3( 0.0f,  0.0f,  0.0f),\n            glm::vec3( 4.0f,  0.0f,  0.0f),\n            glm::vec3(-4.0f,  0.0f,  0.0f),\n            glm::vec3( 0.0f,  0.0f, -8.0f),\n            glm::vec3( 0.0f,  0.0f,  8.0f),\n            glm::vec3( 8.0f,  0.0f, -8.0f),\n            glm::vec3(-10.0f,  0.0f, -2.0f),\n            glm::vec3( 2.0f,  0.0f,  2.0f),\n            glm::vec3(-2.0f,  0.0f,  2.0f),\n            glm::vec3( 0.0f,  2.0f,  0.0f)\n        };\n        \n        for(unsigned int i = 0; i \u003C 10; i++)\n        {\n            glm::mat4 model = glm::mat4(1.0f);\n            model = glm::translate(model, cubePositions[i]);\n            float angle = 20.0f * i;\n            model = glm::rotate(model, glm::radians(angle), glm::vec3(1.0f, 0.3f, 0.5f));\n            lightingShader.setMat4(\"model\", model);\n\n            glDrawArrays(GL_TRIANGLES, 0, 36);\n        }\n\n        lampShader.use();\n        lampShader.setMat4(\"projection\", projection);\n        lampShader.setMat4(\"view\", view);\n        \n        \u002F\u002F 光源立方体的模型矩阵\n        mat4 lampModel = mat4(1.0f);\n        lampModel = translate(lampModel, lightPos);\n        lampModel = scale(lampModel, vec3(0.2f)); \u002F\u002F 缩小光源立方体\n        lampShader.setMat4(\"model\", lampModel);\n        \n        glBindVertexArray(lightVAO);\n        glDrawArrays(GL_TRIANGLES, 0, 36);\n        \n        \u002F\u002F 使用 ImGui 管理器渲染所有窗口\n        imguiManager.render();\n\n        \u002F\u002F 交换缓冲区和检查IO事件\n        glfwSwapBuffers(window);\n    }\n\n    \u002F\u002F 清理 ImGui 管理器\n    imguiManager.shutdown();\n\n    \u002F\u002F 清理资源\n    glDeleteVertexArrays(1, &VAO);\n    glDeleteVertexArrays(1, &lightVAO);\n    glDeleteBuffers(1, &VBO);\n    glDeleteTextures(1, &texture1);\n    glfwTerminate();\n    return 0;\n}\n\n\n#version 330 core\nout vec4 FragColor;\n\nstruct Material{\n    sampler2D diffuse;\n    vec3 specular;\n    float shininess;\n};\n\nstruct Light{\n    vec3 position;\n    vec3 ambient;\n    vec3 diffuse;\n    vec3 specular;\n\n    float constant;\n    float linear;\n    float quadratic;\n};\n\nuniform Light light;\nuniform vec3 viewPos;\nuniform Material material;\nin vec3 Normal;\nin vec3 FragPos;\nin vec2 TexCoords;\n\nvoid main()\n{\n    \u002F\u002F 从纹理采样颜色\n    vec3 textureColor = vec3(texture(material.diffuse, TexCoords));\n    float distance    = length(light.position - FragPos);\n    float attenuation = 1.0 \u002F (light.constant + light.linear * distance + \n                 light.quadratic * (distance * distance));\n    \u002F\u002F 环境光\n    vec3 ambient = attenuation* light.ambient * textureColor;\n    \n    \u002F\u002F 漫反射\n    vec3 norm = normalize(Normal);\n    vec3 lightDir = normalize(light.position - FragPos);\n    float diff = max(dot(norm, lightDir), 0.0);\n    vec3 diffuse = attenuation* light.diffuse * (diff * textureColor);\n    \n    \u002F\u002F 镜面反射\n    vec3 viewDir = normalize(viewPos - FragPos);\n    vec3 reflectDir = reflect(-lightDir, norm);\n    float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess);\n    vec3 specular = attenuation* light.specular * (spec * material.specular);\n    \n    \u002F\u002F 最终结果\n    vec3 result = ambient + diffuse + specular;\n    FragColor = vec4(result, 1.0);\n}\n\n\n",[67,6081,6082,6088,6094,6100,6106,6112,6118,6124,6130,6136,6142,6148,6154,6160,6164,6174,6184,6188,6192,6210,6218,6232,6236,6240,6252,6262,6282,6288,6292,6296,6300,6306,6312,6316,6320,6330,6334,6340,6354,6360,6364,6368,6374,6380,6386,6392,6396,6402,6406,6410,6414,6442,6456,6460,6464,6468,6472,6488,6504,6508,6512,6538,6542,6546,6550,6554,6558,6574,6578,6586,6590,6604,6616,6620,6634,6646,6650,6664,6676,6680,6684,6688,6702,6722,6726,6730,6734,6742,6746,6798,6802,6806,6812,6822,6832,6838,6842,6846,6856,6860,6864,6898,6910,6926,6932,6942,6946,6950,6956,6962,6966,6970,6978,6982,6986,6998,7014,7024,7028,7032,7036,7044,7048,7052,7064,7096,7118,7122,7140,7148,7152,7156,7170,7204,7212,7216,7220,7224,7236,7254,7272,7298,7302,7306,7310,7314,7320,7324,7334,7338,7342,7346,7400,7452,7502,7552,7604,7658,7662,7666,7724,7780,7834,7888,7944,8002,8006,8010,8064,8120,8178,8236,8292,8346,8350,8354,8404,8456,8510,8564,8616,8666,8670,8674,8732,8788,8842,8896,8952,9010,9014,9018,9072,9124,9174,9224,9276,9328,9332,9336,9340,9348,9362,9370,9374,9378,9386,9400,9408,9418,9422,9428,9438,9458,9462,9466,9500,9512,9516,9520,9562,9574,9578,9582,9624,9636,9640,9644,9660,9676,9680,9684,9702,9714,9730,9734,9738,9742,9750,9764,9770,9776,9810,9820,9824,9828,9854,9858,9862,9876,9880,9884,9896,9900,9906,9912,9916,9920,9934,9938,9950,9962,9970,9974,9978,10008,10018,10022,10026,10034,10038,10042,10048,10054,10070,10074,10086,10098,10112,10131,10150,10169,10201,10233,10263,10293,10297,10323,10327,10331,10345,10357,10361,10367,10371,10375,10389,10417,10446,10476,10507,10535,10565,10598,10626,10656,10684,10688,10692,10720,10724,10750,10764,10780,10828,10840,10844,10858,10862,10866,10875,10887,10899,10903,10907,10927,10940,10966,10979,10983,10989,11004,11008,11012,11020,11024,11028,11034,11038,11042,11046,11054,11058,11062,11076,11090,11104,11118,11124,11132,11136,11141,11146,11158,11164,11169,11181,11190,11198,11206,11211,11216,11226,11234,11242,11249,11256,11261,11269,11277,11285,11290,11295,11301,11307,11313,11319,11325,11331,11336,11346,11351,11357,11378,11399,11433,11449,11455,11478,11483,11489,11505,11523,11548,11575,11580,11586,11605,11625,11655,11682,11687,11693,11713,11731],{"__ignoreMap":65},[70,6083,6084,6086],{"class":72,"line":73},[70,6085,77],{"class":76},[70,6087,81],{"class":80},[70,6089,6090,6092],{"class":72,"line":84},[70,6091,77],{"class":76},[70,6093,89],{"class":80},[70,6095,6096,6098],{"class":72,"line":92},[70,6097,77],{"class":76},[70,6099,97],{"class":80},[70,6101,6102,6104],{"class":72,"line":100},[70,6103,77],{"class":76},[70,6105,105],{"class":80},[70,6107,6108,6110],{"class":72,"line":108},[70,6109,77],{"class":76},[70,6111,113],{"class":80},[70,6113,6114,6116],{"class":72,"line":116},[70,6115,77],{"class":76},[70,6117,121],{"class":80},[70,6119,6120,6122],{"class":72,"line":124},[70,6121,77],{"class":76},[70,6123,129],{"class":80},[70,6125,6126,6128],{"class":72,"line":132},[70,6127,77],{"class":76},[70,6129,137],{"class":80},[70,6131,6132,6134],{"class":72,"line":140},[70,6133,77],{"class":76},[70,6135,145],{"class":80},[70,6137,6138,6140],{"class":72,"line":148},[70,6139,77],{"class":76},[70,6141,153],{"class":80},[70,6143,6144,6146],{"class":72,"line":156},[70,6145,77],{"class":76},[70,6147,161],{"class":80},[70,6149,6150,6152],{"class":72,"line":164},[70,6151,77],{"class":76},[70,6153,169],{"class":80},[70,6155,6156,6158],{"class":72,"line":172},[70,6157,77],{"class":76},[70,6159,177],{"class":80},[70,6161,6162],{"class":72,"line":180},[70,6163,184],{"emptyLinePlaceholder":183},[70,6165,6166,6168,6170,6172],{"class":72,"line":187},[70,6167,190],{"class":76},[70,6169,193],{"class":76},[70,6171,197],{"class":196},[70,6173,201],{"class":200},[70,6175,6176,6178,6180,6182],{"class":72,"line":204},[70,6177,190],{"class":76},[70,6179,193],{"class":76},[70,6181,211],{"class":196},[70,6183,201],{"class":200},[70,6185,6186],{"class":72,"line":216},[70,6187,184],{"emptyLinePlaceholder":183},[70,6189,6190],{"class":72,"line":221},[70,6191,225],{"class":224},[70,6193,6194,6196,6198,6200,6202,6204,6206,6208],{"class":72,"line":228},[70,6195,231],{"class":76},[70,6197,234],{"class":76},[70,6199,237],{"class":196},[70,6201,240],{"class":200},[70,6203,243],{"class":76},[70,6205,246],{"class":76},[70,6207,250],{"class":249},[70,6209,253],{"class":200},[70,6211,6212,6214,6216],{"class":72,"line":256},[70,6213,259],{"class":76},[70,6215,234],{"class":76},[70,6217,264],{"class":200},[70,6219,6220,6222,6224,6226,6228,6230],{"class":72,"line":267},[70,6221,270],{"class":196},[70,6223,240],{"class":200},[70,6225,276],{"class":275},[70,6227,279],{"class":200},[70,6229,282],{"class":76},[70,6231,285],{"class":200},[70,6233,6234],{"class":72,"line":288},[70,6235,291],{"class":200},[70,6237,6238],{"class":72,"line":294},[70,6239,297],{"class":224},[70,6241,6242,6244,6246,6248,6250],{"class":72,"line":300},[70,6243,303],{"class":196},[70,6245,306],{"class":200},[70,6247,309],{"class":76},[70,6249,312],{"class":196},[70,6251,315],{"class":200},[70,6253,6254,6256,6258,6260],{"class":72,"line":318},[70,6255,321],{"class":76},[70,6257,324],{"class":200},[70,6259,327],{"class":196},[70,6261,330],{"class":200},[70,6263,6264,6266,6268,6270,6272,6274,6276,6278,6280],{"class":72,"line":333},[70,6265,336],{"class":196},[70,6267,339],{"class":200},[70,6269,342],{"class":76},[70,6271,345],{"class":80},[70,6273,348],{"class":76},[70,6275,351],{"class":200},[70,6277,342],{"class":76},[70,6279,356],{"class":196},[70,6281,359],{"class":200},[70,6283,6284,6286],{"class":72,"line":362},[70,6285,365],{"class":76},[70,6287,264],{"class":200},[70,6289,6290],{"class":72,"line":370},[70,6291,373],{"class":200},[70,6293,6294],{"class":72,"line":376},[70,6295,291],{"class":200},[70,6297,6298],{"class":72,"line":381},[70,6299,384],{"class":224},[70,6301,6302,6304],{"class":72,"line":387},[70,6303,303],{"class":196},[70,6305,392],{"class":200},[70,6307,6308,6310],{"class":72,"line":395},[70,6309,398],{"class":196},[70,6311,401],{"class":200},[70,6313,6314],{"class":72,"line":404},[70,6315,291],{"class":200},[70,6317,6318],{"class":72,"line":409},[70,6319,412],{"class":224},[70,6321,6322,6324,6326,6328],{"class":72,"line":415},[70,6323,418],{"class":196},[70,6325,421],{"class":200},[70,6327,424],{"class":275},[70,6329,427],{"class":200},[70,6331,6332],{"class":72,"line":430},[70,6333,291],{"class":200},[70,6335,6336,6338],{"class":72,"line":435},[70,6337,438],{"class":196},[70,6339,441],{"class":200},[70,6341,6342,6344,6346,6348,6350,6352],{"class":72,"line":444},[70,6343,447],{"class":196},[70,6345,450],{"class":200},[70,6347,424],{"class":275},[70,6349,455],{"class":200},[70,6351,424],{"class":275},[70,6353,460],{"class":200},[70,6355,6356,6358],{"class":72,"line":463},[70,6357,466],{"class":196},[70,6359,469],{"class":200},[70,6361,6362],{"class":72,"line":472},[70,6363,291],{"class":200},[70,6365,6366],{"class":72,"line":477},[70,6367,480],{"class":224},[70,6369,6370,6372],{"class":72,"line":483},[70,6371,486],{"class":196},[70,6373,489],{"class":200},[70,6375,6376,6378],{"class":72,"line":492},[70,6377,486],{"class":196},[70,6379,497],{"class":200},[70,6381,6382,6384],{"class":72,"line":500},[70,6383,486],{"class":196},[70,6385,505],{"class":200},[70,6387,6388,6390],{"class":72,"line":508},[70,6389,486],{"class":196},[70,6391,513],{"class":200},[70,6393,6394],{"class":72,"line":516},[70,6395,291],{"class":200},[70,6397,6398,6400],{"class":72,"line":521},[70,6399,524],{"class":76},[70,6401,264],{"class":200},[70,6403,6404],{"class":72,"line":529},[70,6405,532],{"class":200},[70,6407,6408],{"class":72,"line":535},[70,6409,184],{"emptyLinePlaceholder":183},[70,6411,6412],{"class":72,"line":540},[70,6413,543],{"class":224},[70,6415,6416,6418,6420,6422,6424,6426,6428,6430,6432,6434,6436,6438,6440],{"class":72,"line":546},[70,6417,549],{"class":76},[70,6419,552],{"class":196},[70,6421,240],{"class":200},[70,6423,557],{"class":196},[70,6425,560],{"class":76},[70,6427,563],{"class":249},[70,6429,279],{"class":200},[70,6431,568],{"class":76},[70,6433,571],{"class":249},[70,6435,279],{"class":200},[70,6437,568],{"class":76},[70,6439,578],{"class":249},[70,6441,253],{"class":200},[70,6443,6444,6446,6448,6450,6452,6454],{"class":72,"line":583},[70,6445,586],{"class":196},[70,6447,240],{"class":200},[70,6449,424],{"class":275},[70,6451,279],{"class":200},[70,6453,424],{"class":275},[70,6455,597],{"class":200},[70,6457,6458],{"class":72,"line":600},[70,6459,532],{"class":200},[70,6461,6462],{"class":72,"line":605},[70,6463,184],{"emptyLinePlaceholder":183},[70,6465,6466],{"class":72,"line":610},[70,6467,184],{"emptyLinePlaceholder":183},[70,6469,6470],{"class":72,"line":615},[70,6471,618],{"class":224},[70,6473,6474,6476,6478,6480,6482,6484,6486],{"class":72,"line":621},[70,6475,624],{"class":76},[70,6477,627],{"class":200},[70,6479,309],{"class":76},[70,6481,632],{"class":275},[70,6483,635],{"class":76},[70,6485,638],{"class":200},[70,6487,641],{"class":224},[70,6489,6490,6492,6494,6496,6498,6500,6502],{"class":72,"line":644},[70,6491,624],{"class":76},[70,6493,649],{"class":200},[70,6495,309],{"class":76},[70,6497,632],{"class":275},[70,6499,635],{"class":76},[70,6501,638],{"class":200},[70,6503,660],{"class":224},[70,6505,6506],{"class":72,"line":663},[70,6507,184],{"emptyLinePlaceholder":183},[70,6509,6510],{"class":72,"line":668},[70,6511,671],{"class":224},[70,6513,6514,6516,6518,6520,6522,6524,6526,6528,6530,6532,6534,6536],{"class":72,"line":674},[70,6515,677],{"class":196},[70,6517,680],{"class":196},[70,6519,240],{"class":200},[70,6521,685],{"class":275},[70,6523,635],{"class":76},[70,6525,279],{"class":200},[70,6527,692],{"class":275},[70,6529,635],{"class":76},[70,6531,279],{"class":200},[70,6533,699],{"class":275},[70,6535,635],{"class":76},[70,6537,427],{"class":200},[70,6539,6540],{"class":72,"line":706},[70,6541,184],{"emptyLinePlaceholder":183},[70,6543,6544],{"class":72,"line":711},[70,6545,714],{"class":224},[70,6547,6548],{"class":72,"line":717},[70,6549,720],{"class":200},[70,6551,6552],{"class":72,"line":723},[70,6553,184],{"emptyLinePlaceholder":183},[70,6555,6556],{"class":72,"line":728},[70,6557,731],{"class":224},[70,6559,6560,6562,6564,6566,6568,6570,6572],{"class":72,"line":734},[70,6561,549],{"class":76},[70,6563,739],{"class":196},[70,6565,240],{"class":200},[70,6567,557],{"class":196},[70,6569,746],{"class":76},[70,6571,749],{"class":249},[70,6573,752],{"class":200},[70,6575,6576],{"class":72,"line":755},[70,6577,758],{"class":224},[70,6579,6580,6582,6584],{"class":72,"line":761},[70,6581,764],{"class":200},[70,6583,767],{"class":196},[70,6585,770],{"class":200},[70,6587,6588],{"class":72,"line":773},[70,6589,184],{"emptyLinePlaceholder":183},[70,6591,6592,6594,6596,6598,6600,6602],{"class":72,"line":778},[70,6593,321],{"class":76},[70,6595,783],{"class":200},[70,6597,786],{"class":196},[70,6599,789],{"class":200},[70,6601,792],{"class":76},[70,6603,795],{"class":200},[70,6605,6606,6608,6610,6612,6614],{"class":72,"line":798},[70,6607,801],{"class":200},[70,6609,804],{"class":196},[70,6611,240],{"class":200},[70,6613,809],{"class":80},[70,6615,427],{"class":200},[70,6617,6618],{"class":72,"line":814},[70,6619,373],{"class":200},[70,6621,6622,6624,6626,6628,6630,6632],{"class":72,"line":819},[70,6623,321],{"class":76},[70,6625,783],{"class":200},[70,6627,786],{"class":196},[70,6629,828],{"class":200},[70,6631,792],{"class":76},[70,6633,795],{"class":200},[70,6635,6636,6638,6640,6642,6644],{"class":72,"line":835},[70,6637,801],{"class":200},[70,6639,804],{"class":196},[70,6641,240],{"class":200},[70,6643,844],{"class":80},[70,6645,427],{"class":200},[70,6647,6648],{"class":72,"line":849},[70,6649,373],{"class":200},[70,6651,6652,6654,6656,6658,6660,6662],{"class":72,"line":854},[70,6653,321],{"class":76},[70,6655,783],{"class":200},[70,6657,786],{"class":196},[70,6659,863],{"class":200},[70,6661,792],{"class":76},[70,6663,795],{"class":200},[70,6665,6666,6668,6670,6672,6674],{"class":72,"line":870},[70,6667,801],{"class":200},[70,6669,804],{"class":196},[70,6671,240],{"class":200},[70,6673,879],{"class":80},[70,6675,427],{"class":200},[70,6677,6678],{"class":72,"line":884},[70,6679,373],{"class":200},[70,6681,6682],{"class":72,"line":889},[70,6683,291],{"class":200},[70,6685,6686],{"class":72,"line":894},[70,6687,897],{"class":224},[70,6689,6690,6692,6694,6696,6698,6700],{"class":72,"line":900},[70,6691,321],{"class":76},[70,6693,783],{"class":200},[70,6695,786],{"class":196},[70,6697,909],{"class":200},[70,6699,792],{"class":76},[70,6701,795],{"class":200},[70,6703,6704,6706,6708,6710,6712,6714,6716,6718,6720],{"class":72,"line":916},[70,6705,336],{"class":196},[70,6707,339],{"class":200},[70,6709,342],{"class":76},[70,6711,925],{"class":200},[70,6713,928],{"class":196},[70,6715,931],{"class":200},[70,6717,342],{"class":76},[70,6719,356],{"class":196},[70,6721,359],{"class":200},[70,6723,6724],{"class":72,"line":940},[70,6725,373],{"class":200},[70,6727,6728],{"class":72,"line":945},[70,6729,532],{"class":200},[70,6731,6732],{"class":72,"line":950},[70,6733,184],{"emptyLinePlaceholder":183},[70,6735,6736,6738,6740],{"class":72,"line":955},[70,6737,568],{"class":76},[70,6739,960],{"class":196},[70,6741,963],{"class":200},[70,6743,6744],{"class":72,"line":966},[70,6745,969],{"class":224},[70,6747,6748,6750,6752,6754,6756,6758,6760,6762,6764,6766,6768,6770,6772,6774,6776,6778,6780,6782,6784,6786,6788,6790,6792,6794,6796],{"class":72,"line":972},[70,6749,975],{"class":196},[70,6751,978],{"class":200},[70,6753,309],{"class":76},[70,6755,983],{"class":196},[70,6757,240],{"class":200},[70,6759,988],{"class":196},[70,6761,240],{"class":200},[70,6763,993],{"class":275},[70,6765,635],{"class":76},[70,6767,998],{"class":200},[70,6769,624],{"class":76},[70,6771,1003],{"class":200},[70,6773,1006],{"class":275},[70,6775,1009],{"class":76},[70,6777,783],{"class":200},[70,6779,624],{"class":76},[70,6781,1003],{"class":200},[70,6783,1018],{"class":275},[70,6785,279],{"class":200},[70,6787,685],{"class":275},[70,6789,635],{"class":76},[70,6791,279],{"class":200},[70,6793,1029],{"class":275},[70,6795,635],{"class":76},[70,6797,427],{"class":200},[70,6799,6800],{"class":72,"line":1036},[70,6801,184],{"emptyLinePlaceholder":183},[70,6803,6804],{"class":72,"line":1041},[70,6805,1044],{"class":224},[70,6807,6808,6810],{"class":72,"line":1047},[70,6809,1050],{"class":196},[70,6811,1053],{"class":200},[70,6813,6814,6816,6818,6820],{"class":72,"line":1056},[70,6815,1059],{"class":196},[70,6817,1062],{"class":200},[70,6819,1065],{"class":275},[70,6821,427],{"class":200},[70,6823,6824,6826,6828,6830],{"class":72,"line":1070},[70,6825,1059],{"class":196},[70,6827,1075],{"class":200},[70,6829,1065],{"class":275},[70,6831,427],{"class":200},[70,6833,6834,6836],{"class":72,"line":1082},[70,6835,1059],{"class":196},[70,6837,1087],{"class":200},[70,6839,6840],{"class":72,"line":1090},[70,6841,291],{"class":200},[70,6843,6844],{"class":72,"line":1095},[70,6845,1098],{"class":224},[70,6847,6848,6850,6852,6854],{"class":72,"line":1101},[70,6849,1104],{"class":196},[70,6851,1107],{"class":200},[70,6853,1110],{"class":196},[70,6855,1053],{"class":200},[70,6857,6858],{"class":72,"line":1115},[70,6859,184],{"emptyLinePlaceholder":183},[70,6861,6862],{"class":72,"line":1120},[70,6863,1123],{"class":224},[70,6865,6866,6868,6870,6872,6874,6876,6878,6880,6882,6884,6886,6888,6890,6892,6894,6896],{"class":72,"line":1126},[70,6867,1129],{"class":196},[70,6869,560],{"class":76},[70,6871,1134],{"class":200},[70,6873,309],{"class":76},[70,6875,1139],{"class":196},[70,6877,240],{"class":200},[70,6879,1006],{"class":275},[70,6881,279],{"class":200},[70,6883,1018],{"class":275},[70,6885,279],{"class":200},[70,6887,1152],{"class":80},[70,6889,279],{"class":200},[70,6891,1157],{"class":275},[70,6893,279],{"class":200},[70,6895,1157],{"class":275},[70,6897,427],{"class":200},[70,6899,6900,6902,6904,6906,6908],{"class":72,"line":1166},[70,6901,321],{"class":76},[70,6903,1171],{"class":200},[70,6905,792],{"class":76},[70,6907,1176],{"class":275},[70,6909,253],{"class":200},[70,6911,6912,6914,6916,6918,6920,6922,6924],{"class":72,"line":1181},[70,6913,336],{"class":196},[70,6915,339],{"class":200},[70,6917,342],{"class":76},[70,6919,1190],{"class":80},[70,6921,348],{"class":76},[70,6923,356],{"class":196},[70,6925,359],{"class":200},[70,6927,6928,6930],{"class":72,"line":1199},[70,6929,1202],{"class":196},[70,6931,1053],{"class":200},[70,6933,6934,6936,6938,6940],{"class":72,"line":1207},[70,6935,365],{"class":76},[70,6937,1212],{"class":76},[70,6939,276],{"class":275},[70,6941,201],{"class":200},[70,6943,6944],{"class":72,"line":1219},[70,6945,373],{"class":200},[70,6947,6948],{"class":72,"line":1224},[70,6949,184],{"emptyLinePlaceholder":183},[70,6951,6952,6954],{"class":72,"line":1229},[70,6953,1232],{"class":196},[70,6955,770],{"class":200},[70,6957,6958,6960],{"class":72,"line":1237},[70,6959,1240],{"class":196},[70,6961,1243],{"class":200},[70,6963,6964],{"class":72,"line":1246},[70,6965,291],{"class":200},[70,6967,6968],{"class":72,"line":1251},[70,6969,1254],{"class":224},[70,6971,6972,6974,6976],{"class":72,"line":1257},[70,6973,764],{"class":200},[70,6975,1262],{"class":196},[70,6977,770],{"class":200},[70,6979,6980],{"class":72,"line":1267},[70,6981,184],{"emptyLinePlaceholder":183},[70,6983,6984],{"class":72,"line":1272},[70,6985,1275],{"class":224},[70,6987,6988,6990,6992,6994,6996],{"class":72,"line":1278},[70,6989,321],{"class":76},[70,6991,783],{"class":200},[70,6993,1285],{"class":76},[70,6995,1288],{"class":196},[70,6997,1291],{"class":200},[70,6999,7000,7002,7004,7006,7008,7010,7012],{"class":72,"line":1294},[70,7001,336],{"class":196},[70,7003,339],{"class":200},[70,7005,342],{"class":76},[70,7007,1303],{"class":80},[70,7009,348],{"class":76},[70,7011,356],{"class":196},[70,7013,359],{"class":200},[70,7015,7016,7018,7020,7022],{"class":72,"line":1312},[70,7017,365],{"class":76},[70,7019,1212],{"class":76},[70,7021,276],{"class":275},[70,7023,201],{"class":200},[70,7025,7026],{"class":72,"line":1323},[70,7027,373],{"class":200},[70,7029,7030],{"class":72,"line":1328},[70,7031,184],{"emptyLinePlaceholder":183},[70,7033,7034],{"class":72,"line":1333},[70,7035,1336],{"class":224},[70,7037,7038,7040,7042],{"class":72,"line":1339},[70,7039,1342],{"class":200},[70,7041,1262],{"class":196},[70,7043,770],{"class":200},[70,7045,7046],{"class":72,"line":1349},[70,7047,291],{"class":200},[70,7049,7050],{"class":72,"line":1354},[70,7051,1357],{"class":224},[70,7053,7054,7056,7058,7060,7062],{"class":72,"line":1360},[70,7055,1342],{"class":200},[70,7057,1365],{"class":196},[70,7059,240],{"class":200},[70,7061,1370],{"class":80},[70,7063,1373],{"class":200},[70,7065,7066,7068,7070,7072,7074,7076,7078,7080,7082,7084,7086,7088,7090,7092,7094],{"class":72,"line":1376},[70,7067,1379],{"class":196},[70,7069,1107],{"class":200},[70,7071,1384],{"class":196},[70,7073,240],{"class":200},[70,7075,1389],{"class":80},[70,7077,1392],{"class":275},[70,7079,1395],{"class":80},[70,7081,1398],{"class":200},[70,7083,1401],{"class":196},[70,7085,931],{"class":200},[70,7087,1406],{"class":76},[70,7089,1409],{"class":80},[70,7091,1412],{"class":76},[70,7093,1415],{"class":80},[70,7095,427],{"class":200},[70,7097,7098,7100,7102,7104,7106,7108,7110,7112,7114,7116],{"class":72,"line":1420},[70,7099,1379],{"class":196},[70,7101,1107],{"class":200},[70,7103,1384],{"class":196},[70,7105,240],{"class":200},[70,7107,1431],{"class":80},[70,7109,1434],{"class":275},[70,7111,1395],{"class":80},[70,7113,1398],{"class":200},[70,7115,1441],{"class":196},[70,7117,1444],{"class":200},[70,7119,7120],{"class":72,"line":1447},[70,7121,1450],{"class":200},[70,7123,7124,7126,7128,7130,7132,7134,7136,7138],{"class":72,"line":1453},[70,7125,1456],{"class":76},[70,7127,783],{"class":200},[70,7129,1461],{"class":196},[70,7131,1107],{"class":200},[70,7133,1466],{"class":196},[70,7135,240],{"class":200},[70,7137,1471],{"class":80},[70,7139,1474],{"class":200},[70,7141,7142,7144,7146],{"class":72,"line":1477},[70,7143,1480],{"class":200},[70,7145,1483],{"class":196},[70,7147,1053],{"class":200},[70,7149,7150],{"class":72,"line":1488},[70,7151,1491],{"class":200},[70,7153,7154],{"class":72,"line":1494},[70,7155,1450],{"class":200},[70,7157,7158,7160,7162,7164,7166,7168],{"class":72,"line":1499},[70,7159,1502],{"class":76},[70,7161,1505],{"class":200},[70,7163,309],{"class":76},[70,7165,925],{"class":200},[70,7167,1441],{"class":196},[70,7169,1053],{"class":200},[70,7171,7172,7174,7176,7178,7180,7182,7184,7186,7188,7190,7192,7194,7196,7198,7200,7202],{"class":72,"line":1516},[70,7173,1456],{"class":76},[70,7175,783],{"class":200},[70,7177,1461],{"class":196},[70,7179,1107],{"class":200},[70,7181,1527],{"class":196},[70,7183,240],{"class":200},[70,7185,1532],{"class":80},[70,7187,279],{"class":200},[70,7189,282],{"class":76},[70,7191,1539],{"class":200},[70,7193,1542],{"class":275},[70,7195,635],{"class":76},[70,7197,279],{"class":200},[70,7199,1549],{"class":275},[70,7201,635],{"class":76},[70,7203,1474],{"class":200},[70,7205,7206,7208,7210],{"class":72,"line":1556},[70,7207,1480],{"class":200},[70,7209,1561],{"class":196},[70,7211,1564],{"class":200},[70,7213,7214],{"class":72,"line":1567},[70,7215,1491],{"class":200},[70,7217,7218],{"class":72,"line":1572},[70,7219,1575],{"class":200},[70,7221,7222],{"class":72,"line":1578},[70,7223,291],{"class":200},[70,7225,7226,7228,7230,7232,7234],{"class":72,"line":1583},[70,7227,1342],{"class":200},[70,7229,1365],{"class":196},[70,7231,240],{"class":200},[70,7233,809],{"class":80},[70,7235,1373],{"class":200},[70,7237,7238,7240,7242,7244,7246,7248,7250,7252],{"class":72,"line":1596},[70,7239,1599],{"class":196},[70,7241,282],{"class":76},[70,7243,1604],{"class":200},[70,7245,309],{"class":76},[70,7247,1609],{"class":196},[70,7249,1107],{"class":200},[70,7251,1614],{"class":196},[70,7253,1053],{"class":200},[70,7255,7256,7258,7260,7262,7264,7266,7268,7270],{"class":72,"line":1619},[70,7257,1379],{"class":196},[70,7259,1107],{"class":200},[70,7261,1384],{"class":196},[70,7263,240],{"class":200},[70,7265,1630],{"class":80},[70,7267,1633],{"class":275},[70,7269,1395],{"class":80},[70,7271,1638],{"class":200},[70,7273,7274,7276,7278,7280,7282,7284,7286,7288,7290,7292,7294,7296],{"class":72,"line":1641},[70,7275,1379],{"class":196},[70,7277,1107],{"class":200},[70,7279,1384],{"class":196},[70,7281,240],{"class":200},[70,7283,1652],{"class":80},[70,7285,1434],{"class":275},[70,7287,1657],{"class":80},[70,7289,279],{"class":200},[70,7291,1662],{"class":275},[70,7293,635],{"class":76},[70,7295,1009],{"class":76},[70,7297,1669],{"class":200},[70,7299,7300],{"class":72,"line":1672},[70,7301,1575],{"class":200},[70,7303,7304],{"class":72,"line":1677},[70,7305,291],{"class":200},[70,7307,7308],{"class":72,"line":1682},[70,7309,184],{"emptyLinePlaceholder":183},[70,7311,7312],{"class":72,"line":1687},[70,7313,1690],{"class":224},[70,7315,7316,7318],{"class":72,"line":1693},[70,7317,1696],{"class":196},[70,7319,1699],{"class":200},[70,7321,7322],{"class":72,"line":1702},[70,7323,184],{"emptyLinePlaceholder":183},[70,7325,7326,7328,7330,7332],{"class":72,"line":1707},[70,7327,1710],{"class":76},[70,7329,1713],{"class":200},[70,7331,309],{"class":76},[70,7333,1718],{"class":200},[70,7335,7336],{"class":72,"line":1721},[70,7337,1724],{"class":224},[70,7339,7340],{"class":72,"line":1727},[70,7341,1730],{"class":224},[70,7343,7344],{"class":72,"line":1733},[70,7345,1736],{"class":224},[70,7347,7348,7350,7352,7354,7356,7358,7360,7362,7364,7366,7368,7370,7372,7374,7376,7378,7380,7382,7384,7386,7388,7390,7392,7394,7396,7398],{"class":72,"line":1739},[70,7349,1742],{"class":76},[70,7351,1549],{"class":275},[70,7353,635],{"class":76},[70,7355,279],{"class":200},[70,7357,1751],{"class":76},[70,7359,1549],{"class":275},[70,7361,635],{"class":76},[70,7363,1758],{"class":200},[70,7365,1549],{"class":275},[70,7367,635],{"class":76},[70,7369,1758],{"class":200},[70,7371,1767],{"class":275},[70,7373,635],{"class":76},[70,7375,1758],{"class":200},[70,7377,1767],{"class":275},[70,7379,635],{"class":76},[70,7381,1758],{"class":200},[70,7383,1780],{"class":275},[70,7385,635],{"class":76},[70,7387,1758],{"class":200},[70,7389,1767],{"class":275},[70,7391,635],{"class":76},[70,7393,279],{"class":200},[70,7395,1767],{"class":275},[70,7397,635],{"class":76},[70,7399,1797],{"class":200},[70,7401,7402,7404,7406,7408,7410,7412,7414,7416,7418,7420,7422,7424,7426,7428,7430,7432,7434,7436,7438,7440,7442,7444,7446,7448,7450],{"class":72,"line":1800},[70,7403,1803],{"class":275},[70,7405,635],{"class":76},[70,7407,279],{"class":200},[70,7409,1751],{"class":76},[70,7411,1549],{"class":275},[70,7413,635],{"class":76},[70,7415,1758],{"class":200},[70,7417,1549],{"class":275},[70,7419,635],{"class":76},[70,7421,1758],{"class":200},[70,7423,1767],{"class":275},[70,7425,635],{"class":76},[70,7427,1758],{"class":200},[70,7429,1767],{"class":275},[70,7431,635],{"class":76},[70,7433,1758],{"class":200},[70,7435,1780],{"class":275},[70,7437,635],{"class":76},[70,7439,1758],{"class":200},[70,7441,1780],{"class":275},[70,7443,635],{"class":76},[70,7445,279],{"class":200},[70,7447,1767],{"class":275},[70,7449,635],{"class":76},[70,7451,1797],{"class":200},[70,7453,7454,7456,7458,7460,7462,7464,7466,7468,7470,7472,7474,7476,7478,7480,7482,7484,7486,7488,7490,7492,7494,7496,7498,7500],{"class":72,"line":1854},[70,7455,1803],{"class":275},[70,7457,635],{"class":76},[70,7459,1758],{"class":200},[70,7461,1549],{"class":275},[70,7463,635],{"class":76},[70,7465,1758],{"class":200},[70,7467,1549],{"class":275},[70,7469,635],{"class":76},[70,7471,1758],{"class":200},[70,7473,1767],{"class":275},[70,7475,635],{"class":76},[70,7477,1758],{"class":200},[70,7479,1767],{"class":275},[70,7481,635],{"class":76},[70,7483,1758],{"class":200},[70,7485,1780],{"class":275},[70,7487,635],{"class":76},[70,7489,1758],{"class":200},[70,7491,1780],{"class":275},[70,7493,635],{"class":76},[70,7495,279],{"class":200},[70,7497,1780],{"class":275},[70,7499,635],{"class":76},[70,7501,1797],{"class":200},[70,7503,7504,7506,7508,7510,7512,7514,7516,7518,7520,7522,7524,7526,7528,7530,7532,7534,7536,7538,7540,7542,7544,7546,7548,7550],{"class":72,"line":1905},[70,7505,1803],{"class":275},[70,7507,635],{"class":76},[70,7509,1758],{"class":200},[70,7511,1549],{"class":275},[70,7513,635],{"class":76},[70,7515,1758],{"class":200},[70,7517,1549],{"class":275},[70,7519,635],{"class":76},[70,7521,1758],{"class":200},[70,7523,1767],{"class":275},[70,7525,635],{"class":76},[70,7527,1758],{"class":200},[70,7529,1767],{"class":275},[70,7531,635],{"class":76},[70,7533,1758],{"class":200},[70,7535,1780],{"class":275},[70,7537,635],{"class":76},[70,7539,1758],{"class":200},[70,7541,1780],{"class":275},[70,7543,635],{"class":76},[70,7545,279],{"class":200},[70,7547,1780],{"class":275},[70,7549,635],{"class":76},[70,7551,1797],{"class":200},[70,7553,7554,7556,7558,7560,7562,7564,7566,7568,7570,7572,7574,7576,7578,7580,7582,7584,7586,7588,7590,7592,7594,7596,7598,7600,7602],{"class":72,"line":1956},[70,7555,1742],{"class":76},[70,7557,1549],{"class":275},[70,7559,635],{"class":76},[70,7561,1758],{"class":200},[70,7563,1549],{"class":275},[70,7565,635],{"class":76},[70,7567,1758],{"class":200},[70,7569,1549],{"class":275},[70,7571,635],{"class":76},[70,7573,1758],{"class":200},[70,7575,1767],{"class":275},[70,7577,635],{"class":76},[70,7579,1758],{"class":200},[70,7581,1767],{"class":275},[70,7583,635],{"class":76},[70,7585,1758],{"class":200},[70,7587,1780],{"class":275},[70,7589,635],{"class":76},[70,7591,1758],{"class":200},[70,7593,1767],{"class":275},[70,7595,635],{"class":76},[70,7597,279],{"class":200},[70,7599,1780],{"class":275},[70,7601,635],{"class":76},[70,7603,1797],{"class":200},[70,7605,7606,7608,7610,7612,7614,7616,7618,7620,7622,7624,7626,7628,7630,7632,7634,7636,7638,7640,7642,7644,7646,7648,7650,7652,7654,7656],{"class":72,"line":2009},[70,7607,1742],{"class":76},[70,7609,1549],{"class":275},[70,7611,635],{"class":76},[70,7613,279],{"class":200},[70,7615,1751],{"class":76},[70,7617,1549],{"class":275},[70,7619,635],{"class":76},[70,7621,1758],{"class":200},[70,7623,1549],{"class":275},[70,7625,635],{"class":76},[70,7627,1758],{"class":200},[70,7629,1767],{"class":275},[70,7631,635],{"class":76},[70,7633,1758],{"class":200},[70,7635,1767],{"class":275},[70,7637,635],{"class":76},[70,7639,1758],{"class":200},[70,7641,1780],{"class":275},[70,7643,635],{"class":76},[70,7645,1758],{"class":200},[70,7647,1767],{"class":275},[70,7649,635],{"class":76},[70,7651,279],{"class":200},[70,7653,1767],{"class":275},[70,7655,635],{"class":76},[70,7657,1797],{"class":200},[70,7659,7660],{"class":72,"line":2064},[70,7661,291],{"class":200},[70,7663,7664],{"class":72,"line":2069},[70,7665,2072],{"class":224},[70,7667,7668,7670,7672,7674,7676,7678,7680,7682,7684,7686,7688,7690,7692,7694,7696,7698,7700,7702,7704,7706,7708,7710,7712,7714,7716,7718,7720,7722],{"class":72,"line":2075},[70,7669,1742],{"class":76},[70,7671,1549],{"class":275},[70,7673,635],{"class":76},[70,7675,279],{"class":200},[70,7677,1751],{"class":76},[70,7679,1549],{"class":275},[70,7681,635],{"class":76},[70,7683,279],{"class":200},[70,7685,1751],{"class":76},[70,7687,1549],{"class":275},[70,7689,635],{"class":76},[70,7691,1758],{"class":200},[70,7693,1767],{"class":275},[70,7695,635],{"class":76},[70,7697,1758],{"class":200},[70,7699,1767],{"class":275},[70,7701,635],{"class":76},[70,7703,279],{"class":200},[70,7705,1751],{"class":76},[70,7707,1780],{"class":275},[70,7709,635],{"class":76},[70,7711,1758],{"class":200},[70,7713,1767],{"class":275},[70,7715,635],{"class":76},[70,7717,279],{"class":200},[70,7719,1767],{"class":275},[70,7721,635],{"class":76},[70,7723,1797],{"class":200},[70,7725,7726,7728,7730,7732,7734,7736,7738,7740,7742,7744,7746,7748,7750,7752,7754,7756,7758,7760,7762,7764,7766,7768,7770,7772,7774,7776,7778],{"class":72,"line":2134},[70,7727,1803],{"class":275},[70,7729,635],{"class":76},[70,7731,279],{"class":200},[70,7733,1751],{"class":76},[70,7735,1549],{"class":275},[70,7737,635],{"class":76},[70,7739,279],{"class":200},[70,7741,1751],{"class":76},[70,7743,1549],{"class":275},[70,7745,635],{"class":76},[70,7747,1758],{"class":200},[70,7749,1767],{"class":275},[70,7751,635],{"class":76},[70,7753,1758],{"class":200},[70,7755,1767],{"class":275},[70,7757,635],{"class":76},[70,7759,279],{"class":200},[70,7761,1751],{"class":76},[70,7763,1780],{"class":275},[70,7765,635],{"class":76},[70,7767,1758],{"class":200},[70,7769,1780],{"class":275},[70,7771,635],{"class":76},[70,7773,279],{"class":200},[70,7775,1767],{"class":275},[70,7777,635],{"class":76},[70,7779,1797],{"class":200},[70,7781,7782,7784,7786,7788,7790,7792,7794,7796,7798,7800,7802,7804,7806,7808,7810,7812,7814,7816,7818,7820,7822,7824,7826,7828,7830,7832],{"class":72,"line":2191},[70,7783,1803],{"class":275},[70,7785,635],{"class":76},[70,7787,1758],{"class":200},[70,7789,1549],{"class":275},[70,7791,635],{"class":76},[70,7793,279],{"class":200},[70,7795,1751],{"class":76},[70,7797,1549],{"class":275},[70,7799,635],{"class":76},[70,7801,1758],{"class":200},[70,7803,1767],{"class":275},[70,7805,635],{"class":76},[70,7807,1758],{"class":200},[70,7809,1767],{"class":275},[70,7811,635],{"class":76},[70,7813,279],{"class":200},[70,7815,1751],{"class":76},[70,7817,1780],{"class":275},[70,7819,635],{"class":76},[70,7821,1758],{"class":200},[70,7823,1780],{"class":275},[70,7825,635],{"class":76},[70,7827,279],{"class":200},[70,7829,1780],{"class":275},[70,7831,635],{"class":76},[70,7833,1797],{"class":200},[70,7835,7836,7838,7840,7842,7844,7846,7848,7850,7852,7854,7856,7858,7860,7862,7864,7866,7868,7870,7872,7874,7876,7878,7880,7882,7884,7886],{"class":72,"line":2246},[70,7837,1803],{"class":275},[70,7839,635],{"class":76},[70,7841,1758],{"class":200},[70,7843,1549],{"class":275},[70,7845,635],{"class":76},[70,7847,279],{"class":200},[70,7849,1751],{"class":76},[70,7851,1549],{"class":275},[70,7853,635],{"class":76},[70,7855,1758],{"class":200},[70,7857,1767],{"class":275},[70,7859,635],{"class":76},[70,7861,1758],{"class":200},[70,7863,1767],{"class":275},[70,7865,635],{"class":76},[70,7867,279],{"class":200},[70,7869,1751],{"class":76},[70,7871,1780],{"class":275},[70,7873,635],{"class":76},[70,7875,1758],{"class":200},[70,7877,1780],{"class":275},[70,7879,635],{"class":76},[70,7881,279],{"class":200},[70,7883,1780],{"class":275},[70,7885,635],{"class":76},[70,7887,1797],{"class":200},[70,7889,7890,7892,7894,7896,7898,7900,7902,7904,7906,7908,7910,7912,7914,7916,7918,7920,7922,7924,7926,7928,7930,7932,7934,7936,7938,7940,7942],{"class":72,"line":2301},[70,7891,1742],{"class":76},[70,7893,1549],{"class":275},[70,7895,635],{"class":76},[70,7897,1758],{"class":200},[70,7899,1549],{"class":275},[70,7901,635],{"class":76},[70,7903,279],{"class":200},[70,7905,1751],{"class":76},[70,7907,1549],{"class":275},[70,7909,635],{"class":76},[70,7911,1758],{"class":200},[70,7913,1767],{"class":275},[70,7915,635],{"class":76},[70,7917,1758],{"class":200},[70,7919,1767],{"class":275},[70,7921,635],{"class":76},[70,7923,279],{"class":200},[70,7925,1751],{"class":76},[70,7927,1780],{"class":275},[70,7929,635],{"class":76},[70,7931,1758],{"class":200},[70,7933,1767],{"class":275},[70,7935,635],{"class":76},[70,7937,279],{"class":200},[70,7939,1780],{"class":275},[70,7941,635],{"class":76},[70,7943,1797],{"class":200},[70,7945,7946,7948,7950,7952,7954,7956,7958,7960,7962,7964,7966,7968,7970,7972,7974,7976,7978,7980,7982,7984,7986,7988,7990,7992,7994,7996,7998,8000],{"class":72,"line":2358},[70,7947,1742],{"class":76},[70,7949,1549],{"class":275},[70,7951,635],{"class":76},[70,7953,279],{"class":200},[70,7955,1751],{"class":76},[70,7957,1549],{"class":275},[70,7959,635],{"class":76},[70,7961,279],{"class":200},[70,7963,1751],{"class":76},[70,7965,1549],{"class":275},[70,7967,635],{"class":76},[70,7969,1758],{"class":200},[70,7971,1767],{"class":275},[70,7973,635],{"class":76},[70,7975,1758],{"class":200},[70,7977,1767],{"class":275},[70,7979,635],{"class":76},[70,7981,279],{"class":200},[70,7983,1751],{"class":76},[70,7985,1780],{"class":275},[70,7987,635],{"class":76},[70,7989,1758],{"class":200},[70,7991,1767],{"class":275},[70,7993,635],{"class":76},[70,7995,279],{"class":200},[70,7997,1767],{"class":275},[70,7999,635],{"class":76},[70,8001,1797],{"class":200},[70,8003,8004],{"class":72,"line":2417},[70,8005,291],{"class":200},[70,8007,8008],{"class":72,"line":2422},[70,8009,2425],{"class":224},[70,8011,8012,8014,8016,8018,8020,8022,8024,8026,8028,8030,8032,8034,8036,8038,8040,8042,8044,8046,8048,8050,8052,8054,8056,8058,8060,8062],{"class":72,"line":2428},[70,8013,1742],{"class":76},[70,8015,1549],{"class":275},[70,8017,635],{"class":76},[70,8019,1758],{"class":200},[70,8021,1549],{"class":275},[70,8023,635],{"class":76},[70,8025,1758],{"class":200},[70,8027,1549],{"class":275},[70,8029,635],{"class":76},[70,8031,279],{"class":200},[70,8033,1751],{"class":76},[70,8035,1780],{"class":275},[70,8037,635],{"class":76},[70,8039,1758],{"class":200},[70,8041,1767],{"class":275},[70,8043,635],{"class":76},[70,8045,1758],{"class":200},[70,8047,1767],{"class":275},[70,8049,635],{"class":76},[70,8051,1758],{"class":200},[70,8053,1780],{"class":275},[70,8055,635],{"class":76},[70,8057,279],{"class":200},[70,8059,1767],{"class":275},[70,8061,635],{"class":76},[70,8063,1797],{"class":200},[70,8065,8066,8068,8070,8072,8074,8076,8078,8080,8082,8084,8086,8088,8090,8092,8094,8096,8098,8100,8102,8104,8106,8108,8110,8112,8114,8116,8118],{"class":72,"line":2483},[70,8067,1742],{"class":76},[70,8069,1549],{"class":275},[70,8071,635],{"class":76},[70,8073,1758],{"class":200},[70,8075,1549],{"class":275},[70,8077,635],{"class":76},[70,8079,279],{"class":200},[70,8081,1751],{"class":76},[70,8083,1549],{"class":275},[70,8085,635],{"class":76},[70,8087,279],{"class":200},[70,8089,1751],{"class":76},[70,8091,1780],{"class":275},[70,8093,635],{"class":76},[70,8095,1758],{"class":200},[70,8097,1767],{"class":275},[70,8099,635],{"class":76},[70,8101,1758],{"class":200},[70,8103,1767],{"class":275},[70,8105,635],{"class":76},[70,8107,1758],{"class":200},[70,8109,1780],{"class":275},[70,8111,635],{"class":76},[70,8113,279],{"class":200},[70,8115,1780],{"class":275},[70,8117,635],{"class":76},[70,8119,1797],{"class":200},[70,8121,8122,8124,8126,8128,8130,8132,8134,8136,8138,8140,8142,8144,8146,8148,8150,8152,8154,8156,8158,8160,8162,8164,8166,8168,8170,8172,8174,8176],{"class":72,"line":2540},[70,8123,1742],{"class":76},[70,8125,1549],{"class":275},[70,8127,635],{"class":76},[70,8129,279],{"class":200},[70,8131,1751],{"class":76},[70,8133,1549],{"class":275},[70,8135,635],{"class":76},[70,8137,279],{"class":200},[70,8139,1751],{"class":76},[70,8141,1549],{"class":275},[70,8143,635],{"class":76},[70,8145,279],{"class":200},[70,8147,1751],{"class":76},[70,8149,1780],{"class":275},[70,8151,635],{"class":76},[70,8153,1758],{"class":200},[70,8155,1767],{"class":275},[70,8157,635],{"class":76},[70,8159,1758],{"class":200},[70,8161,1767],{"class":275},[70,8163,635],{"class":76},[70,8165,1758],{"class":200},[70,8167,1767],{"class":275},[70,8169,635],{"class":76},[70,8171,279],{"class":200},[70,8173,1780],{"class":275},[70,8175,635],{"class":76},[70,8177,1797],{"class":200},[70,8179,8180,8182,8184,8186,8188,8190,8192,8194,8196,8198,8200,8202,8204,8206,8208,8210,8212,8214,8216,8218,8220,8222,8224,8226,8228,8230,8232,8234],{"class":72,"line":2599},[70,8181,1742],{"class":76},[70,8183,1549],{"class":275},[70,8185,635],{"class":76},[70,8187,279],{"class":200},[70,8189,1751],{"class":76},[70,8191,1549],{"class":275},[70,8193,635],{"class":76},[70,8195,279],{"class":200},[70,8197,1751],{"class":76},[70,8199,1549],{"class":275},[70,8201,635],{"class":76},[70,8203,279],{"class":200},[70,8205,1751],{"class":76},[70,8207,1780],{"class":275},[70,8209,635],{"class":76},[70,8211,1758],{"class":200},[70,8213,1767],{"class":275},[70,8215,635],{"class":76},[70,8217,1758],{"class":200},[70,8219,1767],{"class":275},[70,8221,635],{"class":76},[70,8223,1758],{"class":200},[70,8225,1767],{"class":275},[70,8227,635],{"class":76},[70,8229,279],{"class":200},[70,8231,1780],{"class":275},[70,8233,635],{"class":76},[70,8235,1797],{"class":200},[70,8237,8238,8240,8242,8244,8246,8248,8250,8252,8254,8256,8258,8260,8262,8264,8266,8268,8270,8272,8274,8276,8278,8280,8282,8284,8286,8288,8290],{"class":72,"line":2658},[70,8239,1742],{"class":76},[70,8241,1549],{"class":275},[70,8243,635],{"class":76},[70,8245,279],{"class":200},[70,8247,1751],{"class":76},[70,8249,1549],{"class":275},[70,8251,635],{"class":76},[70,8253,1758],{"class":200},[70,8255,1549],{"class":275},[70,8257,635],{"class":76},[70,8259,279],{"class":200},[70,8261,1751],{"class":76},[70,8263,1780],{"class":275},[70,8265,635],{"class":76},[70,8267,1758],{"class":200},[70,8269,1767],{"class":275},[70,8271,635],{"class":76},[70,8273,1758],{"class":200},[70,8275,1767],{"class":275},[70,8277,635],{"class":76},[70,8279,1758],{"class":200},[70,8281,1767],{"class":275},[70,8283,635],{"class":76},[70,8285,279],{"class":200},[70,8287,1767],{"class":275},[70,8289,635],{"class":76},[70,8291,1797],{"class":200},[70,8293,8294,8296,8298,8300,8302,8304,8306,8308,8310,8312,8314,8316,8318,8320,8322,8324,8326,8328,8330,8332,8334,8336,8338,8340,8342,8344],{"class":72,"line":2715},[70,8295,1742],{"class":76},[70,8297,1549],{"class":275},[70,8299,635],{"class":76},[70,8301,1758],{"class":200},[70,8303,1549],{"class":275},[70,8305,635],{"class":76},[70,8307,1758],{"class":200},[70,8309,1549],{"class":275},[70,8311,635],{"class":76},[70,8313,279],{"class":200},[70,8315,1751],{"class":76},[70,8317,1780],{"class":275},[70,8319,635],{"class":76},[70,8321,1758],{"class":200},[70,8323,1767],{"class":275},[70,8325,635],{"class":76},[70,8327,1758],{"class":200},[70,8329,1767],{"class":275},[70,8331,635],{"class":76},[70,8333,1758],{"class":200},[70,8335,1780],{"class":275},[70,8337,635],{"class":76},[70,8339,279],{"class":200},[70,8341,1767],{"class":275},[70,8343,635],{"class":76},[70,8345,1797],{"class":200},[70,8347,8348],{"class":72,"line":2770},[70,8349,291],{"class":200},[70,8351,8352],{"class":72,"line":2775},[70,8353,2778],{"class":224},[70,8355,8356,8358,8360,8362,8364,8366,8368,8370,8372,8374,8376,8378,8380,8382,8384,8386,8388,8390,8392,8394,8396,8398,8400,8402],{"class":72,"line":2781},[70,8357,1803],{"class":275},[70,8359,635],{"class":76},[70,8361,1758],{"class":200},[70,8363,1549],{"class":275},[70,8365,635],{"class":76},[70,8367,1758],{"class":200},[70,8369,1549],{"class":275},[70,8371,635],{"class":76},[70,8373,1758],{"class":200},[70,8375,1780],{"class":275},[70,8377,635],{"class":76},[70,8379,1758],{"class":200},[70,8381,1767],{"class":275},[70,8383,635],{"class":76},[70,8385,1758],{"class":200},[70,8387,1767],{"class":275},[70,8389,635],{"class":76},[70,8391,1758],{"class":200},[70,8393,1780],{"class":275},[70,8395,635],{"class":76},[70,8397,279],{"class":200},[70,8399,1767],{"class":275},[70,8401,635],{"class":76},[70,8403,1797],{"class":200},[70,8405,8406,8408,8410,8412,8414,8416,8418,8420,8422,8424,8426,8428,8430,8432,8434,8436,8438,8440,8442,8444,8446,8448,8450,8452,8454],{"class":72,"line":2832},[70,8407,1803],{"class":275},[70,8409,635],{"class":76},[70,8411,1758],{"class":200},[70,8413,1549],{"class":275},[70,8415,635],{"class":76},[70,8417,279],{"class":200},[70,8419,1751],{"class":76},[70,8421,1549],{"class":275},[70,8423,635],{"class":76},[70,8425,1758],{"class":200},[70,8427,1780],{"class":275},[70,8429,635],{"class":76},[70,8431,1758],{"class":200},[70,8433,1767],{"class":275},[70,8435,635],{"class":76},[70,8437,1758],{"class":200},[70,8439,1767],{"class":275},[70,8441,635],{"class":76},[70,8443,1758],{"class":200},[70,8445,1780],{"class":275},[70,8447,635],{"class":76},[70,8449,279],{"class":200},[70,8451,1780],{"class":275},[70,8453,635],{"class":76},[70,8455,1797],{"class":200},[70,8457,8458,8460,8462,8464,8466,8468,8470,8472,8474,8476,8478,8480,8482,8484,8486,8488,8490,8492,8494,8496,8498,8500,8502,8504,8506,8508],{"class":72,"line":2885},[70,8459,1803],{"class":275},[70,8461,635],{"class":76},[70,8463,279],{"class":200},[70,8465,1751],{"class":76},[70,8467,1549],{"class":275},[70,8469,635],{"class":76},[70,8471,279],{"class":200},[70,8473,1751],{"class":76},[70,8475,1549],{"class":275},[70,8477,635],{"class":76},[70,8479,1758],{"class":200},[70,8481,1780],{"class":275},[70,8483,635],{"class":76},[70,8485,1758],{"class":200},[70,8487,1767],{"class":275},[70,8489,635],{"class":76},[70,8491,1758],{"class":200},[70,8493,1767],{"class":275},[70,8495,635],{"class":76},[70,8497,1758],{"class":200},[70,8499,1767],{"class":275},[70,8501,635],{"class":76},[70,8503,279],{"class":200},[70,8505,1780],{"class":275},[70,8507,635],{"class":76},[70,8509,1797],{"class":200},[70,8511,8512,8514,8516,8518,8520,8522,8524,8526,8528,8530,8532,8534,8536,8538,8540,8542,8544,8546,8548,8550,8552,8554,8556,8558,8560,8562],{"class":72,"line":2940},[70,8513,1803],{"class":275},[70,8515,635],{"class":76},[70,8517,279],{"class":200},[70,8519,1751],{"class":76},[70,8521,1549],{"class":275},[70,8523,635],{"class":76},[70,8525,279],{"class":200},[70,8527,1751],{"class":76},[70,8529,1549],{"class":275},[70,8531,635],{"class":76},[70,8533,1758],{"class":200},[70,8535,1780],{"class":275},[70,8537,635],{"class":76},[70,8539,1758],{"class":200},[70,8541,1767],{"class":275},[70,8543,635],{"class":76},[70,8545,1758],{"class":200},[70,8547,1767],{"class":275},[70,8549,635],{"class":76},[70,8551,1758],{"class":200},[70,8553,1767],{"class":275},[70,8555,635],{"class":76},[70,8557,279],{"class":200},[70,8559,1780],{"class":275},[70,8561,635],{"class":76},[70,8563,1797],{"class":200},[70,8565,8566,8568,8570,8572,8574,8576,8578,8580,8582,8584,8586,8588,8590,8592,8594,8596,8598,8600,8602,8604,8606,8608,8610,8612,8614],{"class":72,"line":2995},[70,8567,1803],{"class":275},[70,8569,635],{"class":76},[70,8571,279],{"class":200},[70,8573,1751],{"class":76},[70,8575,1549],{"class":275},[70,8577,635],{"class":76},[70,8579,1758],{"class":200},[70,8581,1549],{"class":275},[70,8583,635],{"class":76},[70,8585,1758],{"class":200},[70,8587,1780],{"class":275},[70,8589,635],{"class":76},[70,8591,1758],{"class":200},[70,8593,1767],{"class":275},[70,8595,635],{"class":76},[70,8597,1758],{"class":200},[70,8599,1767],{"class":275},[70,8601,635],{"class":76},[70,8603,1758],{"class":200},[70,8605,1767],{"class":275},[70,8607,635],{"class":76},[70,8609,279],{"class":200},[70,8611,1767],{"class":275},[70,8613,635],{"class":76},[70,8615,1797],{"class":200},[70,8617,8618,8620,8622,8624,8626,8628,8630,8632,8634,8636,8638,8640,8642,8644,8646,8648,8650,8652,8654,8656,8658,8660,8662,8664],{"class":72,"line":3048},[70,8619,1803],{"class":275},[70,8621,635],{"class":76},[70,8623,1758],{"class":200},[70,8625,1549],{"class":275},[70,8627,635],{"class":76},[70,8629,1758],{"class":200},[70,8631,1549],{"class":275},[70,8633,635],{"class":76},[70,8635,1758],{"class":200},[70,8637,1780],{"class":275},[70,8639,635],{"class":76},[70,8641,1758],{"class":200},[70,8643,1767],{"class":275},[70,8645,635],{"class":76},[70,8647,1758],{"class":200},[70,8649,1767],{"class":275},[70,8651,635],{"class":76},[70,8653,1758],{"class":200},[70,8655,1780],{"class":275},[70,8657,635],{"class":76},[70,8659,279],{"class":200},[70,8661,1767],{"class":275},[70,8663,635],{"class":76},[70,8665,1797],{"class":200},[70,8667,8668],{"class":72,"line":3099},[70,8669,291],{"class":200},[70,8671,8672],{"class":72,"line":3104},[70,8673,3107],{"class":224},[70,8675,8676,8678,8680,8682,8684,8686,8688,8690,8692,8694,8696,8698,8700,8702,8704,8706,8708,8710,8712,8714,8716,8718,8720,8722,8724,8726,8728,8730],{"class":72,"line":3110},[70,8677,1742],{"class":76},[70,8679,1549],{"class":275},[70,8681,635],{"class":76},[70,8683,279],{"class":200},[70,8685,1751],{"class":76},[70,8687,1549],{"class":275},[70,8689,635],{"class":76},[70,8691,279],{"class":200},[70,8693,1751],{"class":76},[70,8695,1549],{"class":275},[70,8697,635],{"class":76},[70,8699,1758],{"class":200},[70,8701,1767],{"class":275},[70,8703,635],{"class":76},[70,8705,279],{"class":200},[70,8707,1751],{"class":76},[70,8709,1780],{"class":275},[70,8711,635],{"class":76},[70,8713,1758],{"class":200},[70,8715,1767],{"class":275},[70,8717,635],{"class":76},[70,8719,1758],{"class":200},[70,8721,1767],{"class":275},[70,8723,635],{"class":76},[70,8725,279],{"class":200},[70,8727,1780],{"class":275},[70,8729,635],{"class":76},[70,8731,1797],{"class":200},[70,8733,8734,8736,8738,8740,8742,8744,8746,8748,8750,8752,8754,8756,8758,8760,8762,8764,8766,8768,8770,8772,8774,8776,8778,8780,8782,8784,8786],{"class":72,"line":3169},[70,8735,1803],{"class":275},[70,8737,635],{"class":76},[70,8739,279],{"class":200},[70,8741,1751],{"class":76},[70,8743,1549],{"class":275},[70,8745,635],{"class":76},[70,8747,279],{"class":200},[70,8749,1751],{"class":76},[70,8751,1549],{"class":275},[70,8753,635],{"class":76},[70,8755,1758],{"class":200},[70,8757,1767],{"class":275},[70,8759,635],{"class":76},[70,8761,279],{"class":200},[70,8763,1751],{"class":76},[70,8765,1780],{"class":275},[70,8767,635],{"class":76},[70,8769,1758],{"class":200},[70,8771,1767],{"class":275},[70,8773,635],{"class":76},[70,8775,1758],{"class":200},[70,8777,1780],{"class":275},[70,8779,635],{"class":76},[70,8781,279],{"class":200},[70,8783,1780],{"class":275},[70,8785,635],{"class":76},[70,8787,1797],{"class":200},[70,8789,8790,8792,8794,8796,8798,8800,8802,8804,8806,8808,8810,8812,8814,8816,8818,8820,8822,8824,8826,8828,8830,8832,8834,8836,8838,8840],{"class":72,"line":3226},[70,8791,1803],{"class":275},[70,8793,635],{"class":76},[70,8795,279],{"class":200},[70,8797,1751],{"class":76},[70,8799,1549],{"class":275},[70,8801,635],{"class":76},[70,8803,1758],{"class":200},[70,8805,1549],{"class":275},[70,8807,635],{"class":76},[70,8809,1758],{"class":200},[70,8811,1767],{"class":275},[70,8813,635],{"class":76},[70,8815,279],{"class":200},[70,8817,1751],{"class":76},[70,8819,1780],{"class":275},[70,8821,635],{"class":76},[70,8823,1758],{"class":200},[70,8825,1767],{"class":275},[70,8827,635],{"class":76},[70,8829,1758],{"class":200},[70,8831,1780],{"class":275},[70,8833,635],{"class":76},[70,8835,279],{"class":200},[70,8837,1767],{"class":275},[70,8839,635],{"class":76},[70,8841,1797],{"class":200},[70,8843,8844,8846,8848,8850,8852,8854,8856,8858,8860,8862,8864,8866,8868,8870,8872,8874,8876,8878,8880,8882,8884,8886,8888,8890,8892,8894],{"class":72,"line":3281},[70,8845,1803],{"class":275},[70,8847,635],{"class":76},[70,8849,279],{"class":200},[70,8851,1751],{"class":76},[70,8853,1549],{"class":275},[70,8855,635],{"class":76},[70,8857,1758],{"class":200},[70,8859,1549],{"class":275},[70,8861,635],{"class":76},[70,8863,1758],{"class":200},[70,8865,1767],{"class":275},[70,8867,635],{"class":76},[70,8869,279],{"class":200},[70,8871,1751],{"class":76},[70,8873,1780],{"class":275},[70,8875,635],{"class":76},[70,8877,1758],{"class":200},[70,8879,1767],{"class":275},[70,8881,635],{"class":76},[70,8883,1758],{"class":200},[70,8885,1780],{"class":275},[70,8887,635],{"class":76},[70,8889,279],{"class":200},[70,8891,1767],{"class":275},[70,8893,635],{"class":76},[70,8895,1797],{"class":200},[70,8897,8898,8900,8902,8904,8906,8908,8910,8912,8914,8916,8918,8920,8922,8924,8926,8928,8930,8932,8934,8936,8938,8940,8942,8944,8946,8948,8950],{"class":72,"line":3336},[70,8899,1742],{"class":76},[70,8901,1549],{"class":275},[70,8903,635],{"class":76},[70,8905,279],{"class":200},[70,8907,1751],{"class":76},[70,8909,1549],{"class":275},[70,8911,635],{"class":76},[70,8913,1758],{"class":200},[70,8915,1549],{"class":275},[70,8917,635],{"class":76},[70,8919,1758],{"class":200},[70,8921,1767],{"class":275},[70,8923,635],{"class":76},[70,8925,279],{"class":200},[70,8927,1751],{"class":76},[70,8929,1780],{"class":275},[70,8931,635],{"class":76},[70,8933,1758],{"class":200},[70,8935,1767],{"class":275},[70,8937,635],{"class":76},[70,8939,1758],{"class":200},[70,8941,1767],{"class":275},[70,8943,635],{"class":76},[70,8945,279],{"class":200},[70,8947,1767],{"class":275},[70,8949,635],{"class":76},[70,8951,1797],{"class":200},[70,8953,8954,8956,8958,8960,8962,8964,8966,8968,8970,8972,8974,8976,8978,8980,8982,8984,8986,8988,8990,8992,8994,8996,8998,9000,9002,9004,9006,9008],{"class":72,"line":3393},[70,8955,1742],{"class":76},[70,8957,1549],{"class":275},[70,8959,635],{"class":76},[70,8961,279],{"class":200},[70,8963,1751],{"class":76},[70,8965,1549],{"class":275},[70,8967,635],{"class":76},[70,8969,279],{"class":200},[70,8971,1751],{"class":76},[70,8973,1549],{"class":275},[70,8975,635],{"class":76},[70,8977,1758],{"class":200},[70,8979,1767],{"class":275},[70,8981,635],{"class":76},[70,8983,279],{"class":200},[70,8985,1751],{"class":76},[70,8987,1780],{"class":275},[70,8989,635],{"class":76},[70,8991,1758],{"class":200},[70,8993,1767],{"class":275},[70,8995,635],{"class":76},[70,8997,1758],{"class":200},[70,8999,1767],{"class":275},[70,9001,635],{"class":76},[70,9003,279],{"class":200},[70,9005,1780],{"class":275},[70,9007,635],{"class":76},[70,9009,1797],{"class":200},[70,9011,9012],{"class":72,"line":3452},[70,9013,291],{"class":200},[70,9015,9016],{"class":72,"line":3457},[70,9017,3460],{"class":224},[70,9019,9020,9022,9024,9026,9028,9030,9032,9034,9036,9038,9040,9042,9044,9046,9048,9050,9052,9054,9056,9058,9060,9062,9064,9066,9068,9070],{"class":72,"line":3463},[70,9021,1742],{"class":76},[70,9023,1549],{"class":275},[70,9025,635],{"class":76},[70,9027,1758],{"class":200},[70,9029,1549],{"class":275},[70,9031,635],{"class":76},[70,9033,279],{"class":200},[70,9035,1751],{"class":76},[70,9037,1549],{"class":275},[70,9039,635],{"class":76},[70,9041,1758],{"class":200},[70,9043,1767],{"class":275},[70,9045,635],{"class":76},[70,9047,1758],{"class":200},[70,9049,1780],{"class":275},[70,9051,635],{"class":76},[70,9053,1758],{"class":200},[70,9055,1767],{"class":275},[70,9057,635],{"class":76},[70,9059,1758],{"class":200},[70,9061,1767],{"class":275},[70,9063,635],{"class":76},[70,9065,279],{"class":200},[70,9067,1780],{"class":275},[70,9069,635],{"class":76},[70,9071,1797],{"class":200},[70,9073,9074,9076,9078,9080,9082,9084,9086,9088,9090,9092,9094,9096,9098,9100,9102,9104,9106,9108,9110,9112,9114,9116,9118,9120,9122],{"class":72,"line":3518},[70,9075,1803],{"class":275},[70,9077,635],{"class":76},[70,9079,1758],{"class":200},[70,9081,1549],{"class":275},[70,9083,635],{"class":76},[70,9085,279],{"class":200},[70,9087,1751],{"class":76},[70,9089,1549],{"class":275},[70,9091,635],{"class":76},[70,9093,1758],{"class":200},[70,9095,1767],{"class":275},[70,9097,635],{"class":76},[70,9099,1758],{"class":200},[70,9101,1780],{"class":275},[70,9103,635],{"class":76},[70,9105,1758],{"class":200},[70,9107,1767],{"class":275},[70,9109,635],{"class":76},[70,9111,1758],{"class":200},[70,9113,1780],{"class":275},[70,9115,635],{"class":76},[70,9117,279],{"class":200},[70,9119,1780],{"class":275},[70,9121,635],{"class":76},[70,9123,1797],{"class":200},[70,9125,9126,9128,9130,9132,9134,9136,9138,9140,9142,9144,9146,9148,9150,9152,9154,9156,9158,9160,9162,9164,9166,9168,9170,9172],{"class":72,"line":3571},[70,9127,1803],{"class":275},[70,9129,635],{"class":76},[70,9131,1758],{"class":200},[70,9133,1549],{"class":275},[70,9135,635],{"class":76},[70,9137,1758],{"class":200},[70,9139,1549],{"class":275},[70,9141,635],{"class":76},[70,9143,1758],{"class":200},[70,9145,1767],{"class":275},[70,9147,635],{"class":76},[70,9149,1758],{"class":200},[70,9151,1780],{"class":275},[70,9153,635],{"class":76},[70,9155,1758],{"class":200},[70,9157,1767],{"class":275},[70,9159,635],{"class":76},[70,9161,1758],{"class":200},[70,9163,1780],{"class":275},[70,9165,635],{"class":76},[70,9167,279],{"class":200},[70,9169,1767],{"class":275},[70,9171,635],{"class":76},[70,9173,1797],{"class":200},[70,9175,9176,9178,9180,9182,9184,9186,9188,9190,9192,9194,9196,9198,9200,9202,9204,9206,9208,9210,9212,9214,9216,9218,9220,9222],{"class":72,"line":3622},[70,9177,1803],{"class":275},[70,9179,635],{"class":76},[70,9181,1758],{"class":200},[70,9183,1549],{"class":275},[70,9185,635],{"class":76},[70,9187,1758],{"class":200},[70,9189,1549],{"class":275},[70,9191,635],{"class":76},[70,9193,1758],{"class":200},[70,9195,1767],{"class":275},[70,9197,635],{"class":76},[70,9199,1758],{"class":200},[70,9201,1780],{"class":275},[70,9203,635],{"class":76},[70,9205,1758],{"class":200},[70,9207,1767],{"class":275},[70,9209,635],{"class":76},[70,9211,1758],{"class":200},[70,9213,1780],{"class":275},[70,9215,635],{"class":76},[70,9217,279],{"class":200},[70,9219,1767],{"class":275},[70,9221,635],{"class":76},[70,9223,1797],{"class":200},[70,9225,9226,9228,9230,9232,9234,9236,9238,9240,9242,9244,9246,9248,9250,9252,9254,9256,9258,9260,9262,9264,9266,9268,9270,9272,9274],{"class":72,"line":3673},[70,9227,1742],{"class":76},[70,9229,1549],{"class":275},[70,9231,635],{"class":76},[70,9233,1758],{"class":200},[70,9235,1549],{"class":275},[70,9237,635],{"class":76},[70,9239,1758],{"class":200},[70,9241,1549],{"class":275},[70,9243,635],{"class":76},[70,9245,1758],{"class":200},[70,9247,1767],{"class":275},[70,9249,635],{"class":76},[70,9251,1758],{"class":200},[70,9253,1780],{"class":275},[70,9255,635],{"class":76},[70,9257,1758],{"class":200},[70,9259,1767],{"class":275},[70,9261,635],{"class":76},[70,9263,1758],{"class":200},[70,9265,1767],{"class":275},[70,9267,635],{"class":76},[70,9269,279],{"class":200},[70,9271,1767],{"class":275},[70,9273,635],{"class":76},[70,9275,1797],{"class":200},[70,9277,9278,9280,9282,9284,9286,9288,9290,9292,9294,9296,9298,9300,9302,9304,9306,9308,9310,9312,9314,9316,9318,9320,9322,9324,9326],{"class":72,"line":3726},[70,9279,1742],{"class":76},[70,9281,1549],{"class":275},[70,9283,635],{"class":76},[70,9285,1758],{"class":200},[70,9287,1549],{"class":275},[70,9289,635],{"class":76},[70,9291,279],{"class":200},[70,9293,1751],{"class":76},[70,9295,1549],{"class":275},[70,9297,635],{"class":76},[70,9299,1758],{"class":200},[70,9301,1767],{"class":275},[70,9303,635],{"class":76},[70,9305,1758],{"class":200},[70,9307,1780],{"class":275},[70,9309,635],{"class":76},[70,9311,1758],{"class":200},[70,9313,1767],{"class":275},[70,9315,635],{"class":76},[70,9317,1758],{"class":200},[70,9319,1767],{"class":275},[70,9321,635],{"class":76},[70,9323,279],{"class":200},[70,9325,1780],{"class":275},[70,9327,3777],{"class":76},[70,9329,9330],{"class":72,"line":3780},[70,9331,3783],{"class":200},[70,9333,9334],{"class":72,"line":3786},[70,9335,291],{"class":200},[70,9337,9338],{"class":72,"line":3791},[70,9339,3794],{"class":224},[70,9341,9342,9344,9346],{"class":72,"line":3797},[70,9343,259],{"class":76},[70,9345,234],{"class":76},[70,9347,3804],{"class":200},[70,9349,9350,9352,9354,9356,9358,9360],{"class":72,"line":3807},[70,9351,3810],{"class":196},[70,9353,240],{"class":200},[70,9355,276],{"class":275},[70,9357,279],{"class":200},[70,9359,282],{"class":76},[70,9361,3821],{"class":200},[70,9363,9364,9366,9368],{"class":72,"line":3824},[70,9365,3827],{"class":196},[70,9367,3830],{"class":200},[70,9369,3833],{"class":224},[70,9371,9372],{"class":72,"line":3836},[70,9373,184],{"emptyLinePlaceholder":183},[70,9375,9376],{"class":72,"line":3841},[70,9377,3844],{"class":224},[70,9379,9380,9382,9384],{"class":72,"line":3847},[70,9381,259],{"class":76},[70,9383,234],{"class":76},[70,9385,3854],{"class":200},[70,9387,9388,9390,9392,9394,9396,9398],{"class":72,"line":3857},[70,9389,3860],{"class":196},[70,9391,240],{"class":200},[70,9393,276],{"class":275},[70,9395,279],{"class":200},[70,9397,282],{"class":76},[70,9399,3871],{"class":200},[70,9401,9402,9404,9406],{"class":72,"line":3874},[70,9403,3877],{"class":196},[70,9405,3880],{"class":200},[70,9407,3883],{"class":224},[70,9409,9410,9412,9414,9416],{"class":72,"line":3886},[70,9411,3889],{"class":196},[70,9413,3892],{"class":200},[70,9415,3895],{"class":76},[70,9417,3898],{"class":200},[70,9419,9420],{"class":72,"line":3901},[70,9421,184],{"emptyLinePlaceholder":183},[70,9423,9424,9426],{"class":72,"line":3906},[70,9425,3909],{"class":76},[70,9427,3912],{"class":200},[70,9429,9430,9432,9434,9436],{"class":72,"line":3915},[70,9431,3918],{"class":196},[70,9433,3921],{"class":200},[70,9435,282],{"class":76},[70,9437,3926],{"class":200},[70,9439,9440,9442,9444,9446,9448,9450,9452,9454,9456],{"class":72,"line":3929},[70,9441,3932],{"class":196},[70,9443,339],{"class":200},[70,9445,342],{"class":76},[70,9447,3939],{"class":80},[70,9449,348],{"class":76},[70,9451,3944],{"class":200},[70,9453,342],{"class":76},[70,9455,356],{"class":196},[70,9457,359],{"class":200},[70,9459,9460],{"class":72,"line":3953},[70,9461,184],{"emptyLinePlaceholder":183},[70,9463,9464],{"class":72,"line":3958},[70,9465,3961],{"class":224},[70,9467,9468,9470,9472,9474,9476,9478,9480,9482,9484,9486,9488,9490,9492,9494,9496,9498],{"class":72,"line":3964},[70,9469,3967],{"class":196},[70,9471,240],{"class":200},[70,9473,424],{"class":275},[70,9475,279],{"class":200},[70,9477,1065],{"class":275},[70,9479,3978],{"class":200},[70,9481,3981],{"class":275},[70,9483,746],{"class":76},[70,9485,3986],{"class":76},[70,9487,240],{"class":200},[70,9489,624],{"class":76},[70,9491,998],{"class":200},[70,9493,3995],{"class":76},[70,9495,1003],{"class":200},[70,9497,424],{"class":275},[70,9499,427],{"class":200},[70,9501,9502,9504,9506,9508,9510],{"class":72,"line":4004},[70,9503,4007],{"class":196},[70,9505,240],{"class":200},[70,9507,424],{"class":275},[70,9509,4014],{"class":200},[70,9511,4017],{"class":224},[70,9513,9514],{"class":72,"line":4020},[70,9515,291],{"class":200},[70,9517,9518],{"class":72,"line":4025},[70,9519,4028],{"class":224},[70,9521,9522,9524,9526,9528,9530,9532,9534,9536,9538,9540,9542,9544,9546,9548,9550,9552,9554,9556,9558,9560],{"class":72,"line":4031},[70,9523,3967],{"class":196},[70,9525,240],{"class":200},[70,9527,276],{"class":275},[70,9529,279],{"class":200},[70,9531,1065],{"class":275},[70,9533,3978],{"class":200},[70,9535,3981],{"class":275},[70,9537,746],{"class":76},[70,9539,3986],{"class":76},[70,9541,240],{"class":200},[70,9543,624],{"class":76},[70,9545,998],{"class":200},[70,9547,3995],{"class":76},[70,9549,4060],{"class":200},[70,9551,1065],{"class":275},[70,9553,746],{"class":76},[70,9555,3986],{"class":76},[70,9557,240],{"class":200},[70,9559,624],{"class":76},[70,9561,4073],{"class":200},[70,9563,9564,9566,9568,9570,9572],{"class":72,"line":4076},[70,9565,4007],{"class":196},[70,9567,240],{"class":200},[70,9569,276],{"class":275},[70,9571,4014],{"class":200},[70,9573,4087],{"class":224},[70,9575,9576],{"class":72,"line":4090},[70,9577,291],{"class":200},[70,9579,9580],{"class":72,"line":4095},[70,9581,4098],{"class":224},[70,9583,9584,9586,9588,9590,9592,9594,9596,9598,9600,9602,9604,9606,9608,9610,9612,9614,9616,9618,9620,9622],{"class":72,"line":4101},[70,9585,3967],{"class":196},[70,9587,240],{"class":200},[70,9589,4108],{"class":275},[70,9591,279],{"class":200},[70,9593,4108],{"class":275},[70,9595,3978],{"class":200},[70,9597,3981],{"class":275},[70,9599,746],{"class":76},[70,9601,3986],{"class":76},[70,9603,240],{"class":200},[70,9605,624],{"class":76},[70,9607,998],{"class":200},[70,9609,3995],{"class":76},[70,9611,4060],{"class":200},[70,9613,4133],{"class":275},[70,9615,746],{"class":76},[70,9617,3986],{"class":76},[70,9619,240],{"class":200},[70,9621,624],{"class":76},[70,9623,4073],{"class":200},[70,9625,9626,9628,9630,9632,9634],{"class":72,"line":4146},[70,9627,4007],{"class":196},[70,9629,240],{"class":200},[70,9631,4108],{"class":275},[70,9633,4014],{"class":200},[70,9635,4157],{"class":224},[70,9637,9638],{"class":72,"line":4160},[70,9639,184],{"emptyLinePlaceholder":183},[70,9641,9642],{"class":72,"line":4165},[70,9643,4168],{"class":224},[70,9645,9646,9648,9650,9652,9654,9656,9658],{"class":72,"line":4171},[70,9647,4174],{"class":196},[70,9649,4177],{"class":196},[70,9651,240],{"class":200},[70,9653,4182],{"class":80},[70,9655,279],{"class":200},[70,9657,4187],{"class":80},[70,9659,427],{"class":200},[70,9661,9662,9664,9666,9668,9670,9672,9674],{"class":72,"line":4192},[70,9663,4174],{"class":196},[70,9665,4197],{"class":196},[70,9667,240],{"class":200},[70,9669,4202],{"class":80},[70,9671,279],{"class":200},[70,9673,4207],{"class":80},[70,9675,427],{"class":200},[70,9677,9678],{"class":72,"line":4212},[70,9679,184],{"emptyLinePlaceholder":183},[70,9681,9682],{"class":72,"line":4217},[70,9683,4220],{"class":224},[70,9685,9686,9688,9690,9692,9694,9696,9698,9700],{"class":72,"line":4223},[70,9687,259],{"class":76},[70,9689,234],{"class":76},[70,9691,4230],{"class":200},[70,9693,309],{"class":76},[70,9695,237],{"class":196},[70,9697,240],{"class":200},[70,9699,4239],{"class":80},[70,9701,427],{"class":200},[70,9703,9704,9706,9708,9710,9712],{"class":72,"line":4244},[70,9705,321],{"class":76},[70,9707,4249],{"class":200},[70,9709,792],{"class":76},[70,9711,4254],{"class":275},[70,9713,253],{"class":200},[70,9715,9716,9718,9720,9722,9724,9726,9728],{"class":72,"line":4259},[70,9717,336],{"class":196},[70,9719,339],{"class":200},[70,9721,342],{"class":76},[70,9723,4268],{"class":80},[70,9725,348],{"class":76},[70,9727,356],{"class":196},[70,9729,359],{"class":200},[70,9731,9732],{"class":72,"line":4277},[70,9733,373],{"class":200},[70,9735,9736],{"class":72,"line":4282},[70,9737,184],{"emptyLinePlaceholder":183},[70,9739,9740],{"class":72,"line":4287},[70,9741,4290],{"class":224},[70,9743,9744,9746,9748],{"class":72,"line":4293},[70,9745,259],{"class":76},[70,9747,234],{"class":76},[70,9749,4300],{"class":200},[70,9751,9752,9754,9756,9758,9760,9762],{"class":72,"line":4303},[70,9753,3810],{"class":196},[70,9755,240],{"class":200},[70,9757,276],{"class":275},[70,9759,279],{"class":200},[70,9761,282],{"class":76},[70,9763,4316],{"class":200},[70,9765,9766,9768],{"class":72,"line":4319},[70,9767,3827],{"class":196},[70,9769,4324],{"class":200},[70,9771,9772,9774],{"class":72,"line":4327},[70,9773,3877],{"class":196},[70,9775,4332],{"class":200},[70,9777,9778,9780,9782,9784,9786,9788,9790,9792,9794,9796,9798,9800,9802,9804,9806,9808],{"class":72,"line":4335},[70,9779,3967],{"class":196},[70,9781,240],{"class":200},[70,9783,424],{"class":275},[70,9785,279],{"class":200},[70,9787,1065],{"class":275},[70,9789,3978],{"class":200},[70,9791,3981],{"class":275},[70,9793,746],{"class":76},[70,9795,3986],{"class":76},[70,9797,240],{"class":200},[70,9799,624],{"class":76},[70,9801,998],{"class":200},[70,9803,3995],{"class":76},[70,9805,1003],{"class":200},[70,9807,424],{"class":275},[70,9809,427],{"class":200},[70,9811,9812,9814,9816,9818],{"class":72,"line":4370},[70,9813,4007],{"class":196},[70,9815,240],{"class":200},[70,9817,424],{"class":275},[70,9819,427],{"class":200},[70,9821,9822],{"class":72,"line":4381},[70,9823,184],{"emptyLinePlaceholder":183},[70,9825,9826],{"class":72,"line":4386},[70,9827,4389],{"class":224},[70,9829,9830,9832,9834,9836,9838,9840,9842,9844,9846,9848,9850,9852],{"class":72,"line":4392},[70,9831,4395],{"class":196},[70,9833,4398],{"class":196},[70,9835,240],{"class":200},[70,9837,4403],{"class":275},[70,9839,635],{"class":76},[70,9841,279],{"class":200},[70,9843,1780],{"class":275},[70,9845,635],{"class":76},[70,9847,279],{"class":200},[70,9849,4416],{"class":275},[70,9851,635],{"class":76},[70,9853,427],{"class":200},[70,9855,9856],{"class":72,"line":4423},[70,9857,291],{"class":200},[70,9859,9860],{"class":72,"line":4428},[70,9861,4431],{"class":224},[70,9863,9864,9866,9868,9870,9872,9874],{"class":72,"line":4434},[70,9865,4395],{"class":196},[70,9867,4439],{"class":200},[70,9869,309],{"class":76},[70,9871,925],{"class":200},[70,9873,4446],{"class":196},[70,9875,1053],{"class":200},[70,9877,9878],{"class":72,"line":4451},[70,9879,184],{"emptyLinePlaceholder":183},[70,9881,9882],{"class":72,"line":4456},[70,9883,4459],{"class":224},[70,9885,9886,9888,9890,9892,9894],{"class":72,"line":4462},[70,9887,4465],{"class":76},[70,9889,783],{"class":200},[70,9891,1285],{"class":76},[70,9893,4472],{"class":196},[70,9895,4475],{"class":200},[70,9897,9898],{"class":72,"line":4478},[70,9899,4481],{"class":224},[70,9901,9902,9904],{"class":72,"line":4484},[70,9903,4487],{"class":196},[70,9905,770],{"class":200},[70,9907,9908,9910],{"class":72,"line":4492},[70,9909,4495],{"class":196},[70,9911,1053],{"class":200},[70,9913,9914],{"class":72,"line":4500},[70,9915,184],{"emptyLinePlaceholder":183},[70,9917,9918],{"class":72,"line":4505},[70,9919,4508],{"class":224},[70,9921,9922,9924,9926,9928,9930,9932],{"class":72,"line":4511},[70,9923,4514],{"class":196},[70,9925,4517],{"class":200},[70,9927,309],{"class":76},[70,9929,925],{"class":200},[70,9931,4524],{"class":196},[70,9933,1053],{"class":200},[70,9935,9936],{"class":72,"line":4529},[70,9937,1450],{"class":200},[70,9939,9940,9942,9944,9946,9948],{"class":72,"line":4534},[70,9941,1502],{"class":76},[70,9943,4539],{"class":200},[70,9945,309],{"class":76},[70,9947,4544],{"class":196},[70,9949,1053],{"class":200},[70,9951,9952,9954,9956,9958,9960],{"class":72,"line":4549},[70,9953,4552],{"class":200},[70,9955,309],{"class":76},[70,9957,4539],{"class":200},[70,9959,1751],{"class":76},[70,9961,4561],{"class":200},[70,9963,9964,9966,9968],{"class":72,"line":4564},[70,9965,4567],{"class":200},[70,9967,309],{"class":76},[70,9969,4572],{"class":200},[70,9971,9972],{"class":72,"line":4575},[70,9973,184],{"emptyLinePlaceholder":183},[70,9975,9976],{"class":72,"line":4580},[70,9977,4583],{"class":224},[70,9979,9980,9982,9984,9986,9988,9990,9992,9994,9996,9998,10000,10002,10004,10006],{"class":72,"line":4586},[70,9981,4589],{"class":196},[70,9983,240],{"class":200},[70,9985,4594],{"class":275},[70,9987,635],{"class":76},[70,9989,279],{"class":200},[70,9991,4601],{"class":275},[70,9993,635],{"class":76},[70,9995,279],{"class":200},[70,9997,4601],{"class":275},[70,9999,635],{"class":76},[70,10001,279],{"class":200},[70,10003,1780],{"class":275},[70,10005,635],{"class":76},[70,10007,427],{"class":200},[70,10009,10010,10012,10014,10016],{"class":72,"line":4620},[70,10011,4623],{"class":196},[70,10013,4626],{"class":200},[70,10015,4629],{"class":76},[70,10017,4632],{"class":200},[70,10019,10020],{"class":72,"line":4635},[70,10021,1450],{"class":200},[70,10023,10024],{"class":72,"line":4640},[70,10025,4643],{"class":224},[70,10027,10028,10030,10032],{"class":72,"line":4646},[70,10029,4649],{"class":200},[70,10031,4652],{"class":196},[70,10033,1053],{"class":200},[70,10035,10036],{"class":72,"line":4657},[70,10037,1450],{"class":200},[70,10039,10040],{"class":72,"line":4662},[70,10041,4665],{"class":224},[70,10043,10044,10046],{"class":72,"line":4668},[70,10045,4671],{"class":196},[70,10047,4674],{"class":200},[70,10049,10050,10052],{"class":72,"line":4677},[70,10051,4680],{"class":196},[70,10053,4683],{"class":200},[70,10055,10056,10058,10060,10062,10064,10066,10068],{"class":72,"line":4686},[70,10057,4649],{"class":200},[70,10059,4691],{"class":196},[70,10061,240],{"class":200},[70,10063,4696],{"class":80},[70,10065,279],{"class":200},[70,10067,424],{"class":275},[70,10069,427],{"class":200},[70,10071,10072],{"class":72,"line":4705},[70,10073,1450],{"class":200},[70,10075,10076,10078,10080,10082,10084],{"class":72,"line":4710},[70,10077,4649],{"class":200},[70,10079,4715],{"class":196},[70,10081,240],{"class":200},[70,10083,4720],{"class":80},[70,10085,4723],{"class":200},[70,10087,10088,10090,10092,10094,10096],{"class":72,"line":4726},[70,10089,4649],{"class":200},[70,10091,4715],{"class":196},[70,10093,240],{"class":200},[70,10095,4735],{"class":80},[70,10097,4738],{"class":200},[70,10099,10100,10102,10104,10106,10109],{"class":72,"line":4741},[70,10101,4649],{"class":200},[70,10103,4746],{"class":196},[70,10105,240],{"class":200},[70,10107,10108],{"class":80},"\"light.position\"",[70,10110,10111],{"class":200},", lightPos.x, lightPos.y, lightPos.z);\n",[70,10113,10114,10116,10118,10120,10123,10125,10127,10129],{"class":72,"line":4780},[70,10115,4649],{"class":200},[70,10117,4928],{"class":196},[70,10119,240],{"class":200},[70,10121,10122],{"class":80},"\"light.constant\"",[70,10124,279],{"class":200},[70,10126,1780],{"class":275},[70,10128,635],{"class":76},[70,10130,427],{"class":200},[70,10132,10133,10135,10137,10139,10142,10144,10146,10148],{"class":72,"line":4815},[70,10134,4649],{"class":200},[70,10136,4928],{"class":196},[70,10138,240],{"class":200},[70,10140,10141],{"class":80},"\"light.linear\"",[70,10143,279],{"class":200},[70,10145,5978],{"class":275},[70,10147,635],{"class":76},[70,10149,427],{"class":200},[70,10151,10152,10154,10156,10158,10161,10163,10165,10167],{"class":72,"line":4850},[70,10153,4649],{"class":200},[70,10155,4928],{"class":196},[70,10157,240],{"class":200},[70,10159,10160],{"class":80},"\"light.quadratic\"",[70,10162,279],{"class":200},[70,10164,5981],{"class":275},[70,10166,635],{"class":76},[70,10168,427],{"class":200},[70,10170,10171,10173,10175,10177,10179,10181,10183,10185,10187,10189,10191,10193,10195,10197,10199],{"class":72,"line":4883},[70,10172,4649],{"class":200},[70,10174,4746],{"class":196},[70,10176,240],{"class":200},[70,10178,4789],{"class":80},[70,10180,1758],{"class":200},[70,10182,1780],{"class":275},[70,10184,635],{"class":76},[70,10186,279],{"class":200},[70,10188,1780],{"class":275},[70,10190,635],{"class":76},[70,10192,279],{"class":200},[70,10194,1780],{"class":275},[70,10196,635],{"class":76},[70,10198,4014],{"class":200},[70,10200,4812],{"class":224},[70,10202,10203,10205,10207,10209,10211,10213,10215,10217,10219,10221,10223,10225,10227,10229,10231],{"class":72,"line":4917},[70,10204,4649],{"class":200},[70,10206,4746],{"class":196},[70,10208,240],{"class":200},[70,10210,4824],{"class":80},[70,10212,1758],{"class":200},[70,10214,1780],{"class":275},[70,10216,635],{"class":76},[70,10218,279],{"class":200},[70,10220,1780],{"class":275},[70,10222,635],{"class":76},[70,10224,279],{"class":200},[70,10226,1780],{"class":275},[70,10228,635],{"class":76},[70,10230,4014],{"class":200},[70,10232,4847],{"class":224},[70,10234,10235,10237,10239,10241,10243,10245,10247,10249,10251,10253,10255,10257,10259,10261],{"class":72,"line":4923},[70,10236,4649],{"class":200},[70,10238,4746],{"class":196},[70,10240,240],{"class":200},[70,10242,4859],{"class":80},[70,10244,279],{"class":200},[70,10246,1780],{"class":275},[70,10248,635],{"class":76},[70,10250,279],{"class":200},[70,10252,1780],{"class":275},[70,10254,635],{"class":76},[70,10256,279],{"class":200},[70,10258,1780],{"class":275},[70,10260,635],{"class":76},[70,10262,4880],{"class":200},[70,10264,10265,10267,10269,10271,10273,10275,10277,10279,10281,10283,10285,10287,10289,10291],{"class":72,"line":4955},[70,10266,4649],{"class":200},[70,10268,4746],{"class":196},[70,10270,240],{"class":200},[70,10272,4892],{"class":80},[70,10274,279],{"class":200},[70,10276,4897],{"class":275},[70,10278,635],{"class":76},[70,10280,279],{"class":200},[70,10282,4904],{"class":275},[70,10284,635],{"class":76},[70,10286,279],{"class":200},[70,10288,4897],{"class":275},[70,10290,635],{"class":76},[70,10292,427],{"class":200},[70,10294,10295],{"class":72,"line":4960},[70,10296,4920],{"class":224},[70,10298,10299,10301,10303,10305,10307,10309,10311,10313,10315,10317,10319,10321],{"class":72,"line":4966},[70,10300,4649],{"class":200},[70,10302,4928],{"class":196},[70,10304,240],{"class":200},[70,10306,4933],{"class":80},[70,10308,279],{"class":200},[70,10310,4938],{"class":275},[70,10312,635],{"class":76},[70,10314,746],{"class":76},[70,10316,4945],{"class":275},[70,10318,635],{"class":76},[70,10320,4014],{"class":200},[70,10322,4952],{"class":224},[70,10324,10325],{"class":72,"line":4983},[70,10326,1450],{"class":200},[70,10328,10329],{"class":72,"line":4998},[70,10330,4963],{"class":224},[70,10332,10333,10335,10337,10339,10341,10343],{"class":72,"line":5003},[70,10334,4969],{"class":196},[70,10336,4972],{"class":200},[70,10338,309],{"class":76},[70,10340,925],{"class":200},[70,10342,4446],{"class":196},[70,10344,1053],{"class":200},[70,10346,10347,10349,10351,10353,10355],{"class":72,"line":5012},[70,10348,4649],{"class":200},[70,10350,4746],{"class":196},[70,10352,240],{"class":200},[70,10354,4992],{"class":80},[70,10356,4995],{"class":200},[70,10358,10359],{"class":72,"line":5017},[70,10360,1450],{"class":200},[70,10362,10363,10365],{"class":72,"line":5023},[70,10364,5006],{"class":196},[70,10366,5009],{"class":200},[70,10368,10369],{"class":72,"line":5041},[70,10370,1450],{"class":200},[70,10372,10373],{"class":72,"line":5073},[70,10374,5020],{"class":224},[70,10376,10377,10379,10381,10383,10385,10387],{"class":72,"line":5102},[70,10378,5026],{"class":196},[70,10380,1107],{"class":200},[70,10382,5031],{"class":196},[70,10384,5034],{"class":200},[70,10386,309],{"class":76},[70,10388,1718],{"class":200},[70,10390,10391,10393,10395,10397,10399,10401,10403,10405,10407,10409,10411,10413,10415],{"class":72,"line":5133},[70,10392,5044],{"class":196},[70,10394,1107],{"class":200},[70,10396,5031],{"class":196},[70,10398,5051],{"class":200},[70,10400,1767],{"class":275},[70,10402,635],{"class":76},[70,10404,1758],{"class":200},[70,10406,1767],{"class":275},[70,10408,635],{"class":76},[70,10410,1758],{"class":200},[70,10412,1767],{"class":275},[70,10414,635],{"class":76},[70,10416,5070],{"class":200},[70,10418,10419,10421,10423,10425,10427,10430,10432,10434,10436,10438,10440,10442,10444],{"class":72,"line":5164},[70,10420,5044],{"class":196},[70,10422,1107],{"class":200},[70,10424,5031],{"class":196},[70,10426,5051],{"class":200},[70,10428,10429],{"class":275},"4.0",[70,10431,635],{"class":76},[70,10433,1758],{"class":200},[70,10435,1767],{"class":275},[70,10437,635],{"class":76},[70,10439,1758],{"class":200},[70,10441,1767],{"class":275},[70,10443,635],{"class":76},[70,10445,5070],{"class":200},[70,10447,10448,10450,10452,10454,10456,10458,10460,10462,10464,10466,10468,10470,10472,10474],{"class":72,"line":5193},[70,10449,5044],{"class":196},[70,10451,1107],{"class":200},[70,10453,5031],{"class":196},[70,10455,240],{"class":200},[70,10457,1751],{"class":76},[70,10459,10429],{"class":275},[70,10461,635],{"class":76},[70,10463,1758],{"class":200},[70,10465,1767],{"class":275},[70,10467,635],{"class":76},[70,10469,1758],{"class":200},[70,10471,1767],{"class":275},[70,10473,635],{"class":76},[70,10475,5070],{"class":200},[70,10477,10478,10480,10482,10484,10486,10488,10490,10492,10494,10496,10498,10500,10503,10505],{"class":72,"line":5224},[70,10479,5044],{"class":196},[70,10481,1107],{"class":200},[70,10483,5031],{"class":196},[70,10485,5051],{"class":200},[70,10487,1767],{"class":275},[70,10489,635],{"class":76},[70,10491,1758],{"class":200},[70,10493,1767],{"class":275},[70,10495,635],{"class":76},[70,10497,279],{"class":200},[70,10499,1751],{"class":76},[70,10501,10502],{"class":275},"8.0",[70,10504,635],{"class":76},[70,10506,5070],{"class":200},[70,10508,10509,10511,10513,10515,10517,10519,10521,10523,10525,10527,10529,10531,10533],{"class":72,"line":5257},[70,10510,5044],{"class":196},[70,10512,1107],{"class":200},[70,10514,5031],{"class":196},[70,10516,5051],{"class":200},[70,10518,1767],{"class":275},[70,10520,635],{"class":76},[70,10522,1758],{"class":200},[70,10524,1767],{"class":275},[70,10526,635],{"class":76},[70,10528,1758],{"class":200},[70,10530,10502],{"class":275},[70,10532,635],{"class":76},[70,10534,5070],{"class":200},[70,10536,10537,10539,10541,10543,10545,10547,10549,10551,10553,10555,10557,10559,10561,10563],{"class":72,"line":5286},[70,10538,5044],{"class":196},[70,10540,1107],{"class":200},[70,10542,5031],{"class":196},[70,10544,5051],{"class":200},[70,10546,10502],{"class":275},[70,10548,635],{"class":76},[70,10550,1758],{"class":200},[70,10552,1767],{"class":275},[70,10554,635],{"class":76},[70,10556,279],{"class":200},[70,10558,1751],{"class":76},[70,10560,10502],{"class":275},[70,10562,635],{"class":76},[70,10564,5070],{"class":200},[70,10566,10567,10569,10571,10573,10575,10577,10580,10582,10584,10586,10588,10590,10592,10594,10596],{"class":72,"line":5317},[70,10568,5044],{"class":196},[70,10570,1107],{"class":200},[70,10572,5031],{"class":196},[70,10574,240],{"class":200},[70,10576,1751],{"class":76},[70,10578,10579],{"class":275},"10.0",[70,10581,635],{"class":76},[70,10583,1758],{"class":200},[70,10585,1767],{"class":275},[70,10587,635],{"class":76},[70,10589,279],{"class":200},[70,10591,1751],{"class":76},[70,10593,4416],{"class":275},[70,10595,635],{"class":76},[70,10597,5070],{"class":200},[70,10599,10600,10602,10604,10606,10608,10610,10612,10614,10616,10618,10620,10622,10624],{"class":72,"line":5347},[70,10601,5044],{"class":196},[70,10603,1107],{"class":200},[70,10605,5031],{"class":196},[70,10607,5051],{"class":200},[70,10609,4416],{"class":275},[70,10611,635],{"class":76},[70,10613,1758],{"class":200},[70,10615,1767],{"class":275},[70,10617,635],{"class":76},[70,10619,1758],{"class":200},[70,10621,4416],{"class":275},[70,10623,635],{"class":76},[70,10625,5070],{"class":200},[70,10627,10628,10630,10632,10634,10636,10638,10640,10642,10644,10646,10648,10650,10652,10654],{"class":72,"line":5353},[70,10629,5044],{"class":196},[70,10631,1107],{"class":200},[70,10633,5031],{"class":196},[70,10635,240],{"class":200},[70,10637,1751],{"class":76},[70,10639,4416],{"class":275},[70,10641,635],{"class":76},[70,10643,1758],{"class":200},[70,10645,1767],{"class":275},[70,10647,635],{"class":76},[70,10649,1758],{"class":200},[70,10651,4416],{"class":275},[70,10653,635],{"class":76},[70,10655,5070],{"class":200},[70,10657,10658,10660,10662,10664,10666,10668,10670,10672,10674,10676,10678,10680,10682],{"class":72,"line":5358},[70,10659,5044],{"class":196},[70,10661,1107],{"class":200},[70,10663,5031],{"class":196},[70,10665,5051],{"class":200},[70,10667,1767],{"class":275},[70,10669,635],{"class":76},[70,10671,1758],{"class":200},[70,10673,4416],{"class":275},[70,10675,635],{"class":76},[70,10677,1758],{"class":200},[70,10679,1767],{"class":275},[70,10681,635],{"class":76},[70,10683,5344],{"class":200},[70,10685,10686],{"class":72,"line":5394},[70,10687,5350],{"class":200},[70,10689,10690],{"class":72,"line":5400},[70,10691,1450],{"class":200},[70,10693,10694,10696,10698,10700,10702,10704,10706,10708,10710,10712,10714,10716,10718],{"class":72,"line":5429},[70,10695,5361],{"class":76},[70,10697,240],{"class":200},[70,10699,231],{"class":76},[70,10701,234],{"class":76},[70,10703,5370],{"class":200},[70,10705,309],{"class":76},[70,10707,4254],{"class":275},[70,10709,5377],{"class":200},[70,10711,5380],{"class":76},[70,10713,5383],{"class":275},[70,10715,5386],{"class":200},[70,10717,5389],{"class":76},[70,10719,5344],{"class":200},[70,10721,10722],{"class":72,"line":5447},[70,10723,5397],{"class":200},[70,10725,10726,10728,10730,10732,10734,10736,10738,10740,10742,10744,10746,10748],{"class":72,"line":5468},[70,10727,5044],{"class":196},[70,10729,1107],{"class":200},[70,10731,5407],{"class":196},[70,10733,5410],{"class":200},[70,10735,309],{"class":76},[70,10737,197],{"class":196},[70,10739,1107],{"class":200},[70,10741,5407],{"class":196},[70,10743,240],{"class":200},[70,10745,1780],{"class":275},[70,10747,635],{"class":76},[70,10749,427],{"class":200},[70,10751,10752,10754,10756,10758,10760,10762],{"class":72,"line":5522},[70,10753,5432],{"class":200},[70,10755,309],{"class":76},[70,10757,197],{"class":196},[70,10759,1107],{"class":200},[70,10761,5441],{"class":196},[70,10763,5444],{"class":200},[70,10765,10766,10768,10770,10772,10774,10776,10778],{"class":72,"line":5538},[70,10767,5450],{"class":76},[70,10769,5453],{"class":200},[70,10771,309],{"class":76},[70,10773,5458],{"class":275},[70,10775,635],{"class":76},[70,10777,746],{"class":76},[70,10779,5465],{"class":200},[70,10781,10782,10784,10786,10788,10790,10792,10794,10796,10798,10800,10802,10804,10806,10808,10810,10812,10814,10816,10818,10820,10822,10824,10826],{"class":72,"line":5543},[70,10783,5432],{"class":200},[70,10785,309],{"class":76},[70,10787,197],{"class":196},[70,10789,1107],{"class":200},[70,10791,5479],{"class":196},[70,10793,5482],{"class":200},[70,10795,5485],{"class":196},[70,10797,1107],{"class":200},[70,10799,988],{"class":196},[70,10801,5492],{"class":200},[70,10803,5485],{"class":196},[70,10805,1107],{"class":200},[70,10807,5031],{"class":196},[70,10809,240],{"class":200},[70,10811,1780],{"class":275},[70,10813,635],{"class":76},[70,10815,279],{"class":200},[70,10817,4601],{"class":275},[70,10819,635],{"class":76},[70,10821,279],{"class":200},[70,10823,1549],{"class":275},[70,10825,635],{"class":76},[70,10827,5519],{"class":200},[70,10829,10830,10832,10834,10836,10838],{"class":72,"line":5561},[70,10831,5525],{"class":200},[70,10833,4715],{"class":196},[70,10835,240],{"class":200},[70,10837,5532],{"class":80},[70,10839,5535],{"class":200},[70,10841,10842],{"class":72,"line":5566},[70,10843,184],{"emptyLinePlaceholder":183},[70,10845,10846,10848,10850,10852,10854,10856],{"class":72,"line":5571},[70,10847,5546],{"class":196},[70,10849,5549],{"class":200},[70,10851,424],{"class":275},[70,10853,279],{"class":200},[70,10855,5556],{"class":275},[70,10857,427],{"class":200},[70,10859,10860],{"class":72,"line":5577},[70,10861,1491],{"class":200},[70,10863,10864],{"class":72,"line":5583},[70,10865,184],{"emptyLinePlaceholder":183},[70,10867,10868,10871,10873],{"class":72,"line":5589},[70,10869,10870],{"class":200},"        lampShader.",[70,10872,4652],{"class":196},[70,10874,1053],{"class":200},[70,10876,10877,10879,10881,10883,10885],{"class":72,"line":5595},[70,10878,10870],{"class":200},[70,10880,4715],{"class":196},[70,10882,240],{"class":200},[70,10884,4720],{"class":80},[70,10886,4723],{"class":200},[70,10888,10889,10891,10893,10895,10897],{"class":72,"line":5601},[70,10890,10870],{"class":200},[70,10892,4715],{"class":196},[70,10894,240],{"class":200},[70,10896,4735],{"class":80},[70,10898,4738],{"class":200},[70,10900,10901],{"class":72,"line":5606},[70,10902,1450],{"class":200},[70,10904,10905],{"class":72,"line":5612},[70,10906,5609],{"class":224},[70,10908,10909,10911,10914,10916,10919,10921,10923,10925],{"class":72,"line":5618},[70,10910,4514],{"class":196},[70,10912,10913],{"class":200}," lampModel ",[70,10915,309],{"class":76},[70,10917,10918],{"class":196}," mat4",[70,10920,240],{"class":200},[70,10922,1780],{"class":275},[70,10924,635],{"class":76},[70,10926,427],{"class":200},[70,10928,10929,10932,10934,10937],{"class":72,"line":5624},[70,10930,10931],{"class":200},"        lampModel ",[70,10933,309],{"class":76},[70,10935,10936],{"class":196}," translate",[70,10938,10939],{"class":200},"(lampModel, lightPos);\n",[70,10941,10942,10944,10946,10949,10952,10954,10956,10958,10960,10963],{"class":72,"line":5630},[70,10943,10931],{"class":200},[70,10945,309],{"class":76},[70,10947,10948],{"class":196}," scale",[70,10950,10951],{"class":200},"(lampModel, ",[70,10953,5031],{"class":196},[70,10955,240],{"class":200},[70,10957,4594],{"class":275},[70,10959,635],{"class":76},[70,10961,10962],{"class":200},"));",[70,10964,10965],{"class":224}," \u002F\u002F 缩小光源立方体\n",[70,10967,10968,10970,10972,10974,10976],{"class":72,"line":5636},[70,10969,10870],{"class":200},[70,10971,4715],{"class":196},[70,10973,240],{"class":200},[70,10975,5532],{"class":80},[70,10977,10978],{"class":200},", lampModel);\n",[70,10980,10981],{"class":72,"line":5641},[70,10982,1450],{"class":200},[70,10984,10985,10987],{"class":72,"line":5647},[70,10986,5006],{"class":196},[70,10988,4324],{"class":200},[70,10990,10991,10994,10996,10998,11000,11002],{"class":72,"line":5653},[70,10992,10993],{"class":196},"        glDrawArrays",[70,10995,5549],{"class":200},[70,10997,424],{"class":275},[70,10999,279],{"class":200},[70,11001,5556],{"class":275},[70,11003,427],{"class":200},[70,11005,11006],{"class":72,"line":5659},[70,11007,1450],{"class":200},[70,11009,11010],{"class":72,"line":5664},[70,11011,5667],{"class":224},[70,11013,11014,11016,11018],{"class":72,"line":5670},[70,11015,801],{"class":200},[70,11017,5675],{"class":196},[70,11019,1053],{"class":200},[70,11021,11022],{"class":72,"line":5680},[70,11023,184],{"emptyLinePlaceholder":183},[70,11025,11026],{"class":72,"line":5685},[70,11027,5688],{"class":224},[70,11029,11030,11032],{"class":72,"line":5691},[70,11031,5694],{"class":196},[70,11033,770],{"class":200},[70,11035,11036],{"class":72,"line":5699},[70,11037,373],{"class":200},[70,11039,11040],{"class":72,"line":5704},[70,11041,184],{"emptyLinePlaceholder":183},[70,11043,11044],{"class":72,"line":5709},[70,11045,5712],{"class":224},[70,11047,11048,11050,11052],{"class":72,"line":5715},[70,11049,1342],{"class":200},[70,11051,5720],{"class":196},[70,11053,1053],{"class":200},[70,11055,11056],{"class":72,"line":5725},[70,11057,184],{"emptyLinePlaceholder":183},[70,11059,11060],{"class":72,"line":5730},[70,11061,5733],{"class":224},[70,11063,11064,11066,11068,11070,11072,11074],{"class":72,"line":5736},[70,11065,5739],{"class":196},[70,11067,240],{"class":200},[70,11069,276],{"class":275},[70,11071,279],{"class":200},[70,11073,282],{"class":76},[70,11075,3821],{"class":200},[70,11077,11078,11080,11082,11084,11086,11088],{"class":72,"line":5752},[70,11079,5739],{"class":196},[70,11081,240],{"class":200},[70,11083,276],{"class":275},[70,11085,279],{"class":200},[70,11087,282],{"class":76},[70,11089,4316],{"class":200},[70,11091,11092,11094,11096,11098,11100,11102],{"class":72,"line":5767},[70,11093,5770],{"class":196},[70,11095,240],{"class":200},[70,11097,276],{"class":275},[70,11099,279],{"class":200},[70,11101,282],{"class":76},[70,11103,3871],{"class":200},[70,11105,11106,11108,11110,11112,11114,11116],{"class":72,"line":5783},[70,11107,5786],{"class":196},[70,11109,240],{"class":200},[70,11111,276],{"class":275},[70,11113,279],{"class":200},[70,11115,282],{"class":76},[70,11117,5797],{"class":200},[70,11119,11120,11122],{"class":72,"line":5800},[70,11121,5803],{"class":196},[70,11123,1053],{"class":200},[70,11125,11126,11128,11130],{"class":72,"line":5808},[70,11127,524],{"class":76},[70,11129,4254],{"class":275},[70,11131,201],{"class":200},[70,11133,11134],{"class":72,"line":5817},[70,11135,532],{"class":200},[70,11137,11139],{"class":72,"line":11138},351,[70,11140,184],{"emptyLinePlaceholder":183},[70,11142,11144],{"class":72,"line":11143},352,[70,11145,184],{"emptyLinePlaceholder":183},[70,11147,11149,11152,11155],{"class":72,"line":11148},353,[70,11150,11151],{"class":200},"#version ",[70,11153,11154],{"class":275},"330",[70,11156,11157],{"class":200}," core\n",[70,11159,11161],{"class":72,"line":11160},354,[70,11162,11163],{"class":200},"out vec4 FragColor;\n",[70,11165,11167],{"class":72,"line":11166},355,[70,11168,184],{"emptyLinePlaceholder":183},[70,11170,11172,11175,11178],{"class":72,"line":11171},356,[70,11173,11174],{"class":76},"struct",[70,11176,11177],{"class":196}," Material",[70,11179,11180],{"class":200},"{\n",[70,11182,11184,11187],{"class":72,"line":11183},357,[70,11185,11186],{"class":196},"    sampler2D",[70,11188,11189],{"class":200}," diffuse;\n",[70,11191,11193,11195],{"class":72,"line":11192},358,[70,11194,4395],{"class":196},[70,11196,11197],{"class":200}," specular;\n",[70,11199,11201,11203],{"class":72,"line":11200},359,[70,11202,1710],{"class":76},[70,11204,11205],{"class":200}," shininess;\n",[70,11207,11209],{"class":72,"line":11208},360,[70,11210,3783],{"class":200},[70,11212,11214],{"class":72,"line":11213},361,[70,11215,184],{"emptyLinePlaceholder":183},[70,11217,11219,11221,11224],{"class":72,"line":11218},362,[70,11220,11174],{"class":76},[70,11222,11223],{"class":196}," Light",[70,11225,11180],{"class":200},[70,11227,11229,11231],{"class":72,"line":11228},363,[70,11230,4395],{"class":196},[70,11232,11233],{"class":200}," position;\n",[70,11235,11237,11239],{"class":72,"line":11236},364,[70,11238,4395],{"class":196},[70,11240,11241],{"class":200}," ambient;\n",[70,11243,11245,11247],{"class":72,"line":11244},365,[70,11246,4395],{"class":196},[70,11248,11189],{"class":200},[70,11250,11252,11254],{"class":72,"line":11251},366,[70,11253,4395],{"class":196},[70,11255,11197],{"class":200},[70,11257,11259],{"class":72,"line":11258},367,[70,11260,184],{"emptyLinePlaceholder":183},[70,11262,11264,11266],{"class":72,"line":11263},368,[70,11265,1710],{"class":76},[70,11267,11268],{"class":200}," constant;\n",[70,11270,11272,11274],{"class":72,"line":11271},369,[70,11273,1710],{"class":76},[70,11275,11276],{"class":200}," linear;\n",[70,11278,11280,11282],{"class":72,"line":11279},370,[70,11281,1710],{"class":76},[70,11283,11284],{"class":200}," quadratic;\n",[70,11286,11288],{"class":72,"line":11287},371,[70,11289,3783],{"class":200},[70,11291,11293],{"class":72,"line":11292},372,[70,11294,184],{"emptyLinePlaceholder":183},[70,11296,11298],{"class":72,"line":11297},373,[70,11299,11300],{"class":200},"uniform Light light;\n",[70,11302,11304],{"class":72,"line":11303},374,[70,11305,11306],{"class":200},"uniform vec3 viewPos;\n",[70,11308,11310],{"class":72,"line":11309},375,[70,11311,11312],{"class":200},"uniform Material material;\n",[70,11314,11316],{"class":72,"line":11315},376,[70,11317,11318],{"class":200},"in vec3 Normal;\n",[70,11320,11322],{"class":72,"line":11321},377,[70,11323,11324],{"class":200},"in vec3 FragPos;\n",[70,11326,11328],{"class":72,"line":11327},378,[70,11329,11330],{"class":200},"in vec2 TexCoords;\n",[70,11332,11334],{"class":72,"line":11333},379,[70,11335,184],{"emptyLinePlaceholder":183},[70,11337,11339,11341,11343],{"class":72,"line":11338},380,[70,11340,549],{"class":76},[70,11342,960],{"class":196},[70,11344,11345],{"class":200},"()\n",[70,11347,11349],{"class":72,"line":11348},381,[70,11350,11180],{"class":200},[70,11352,11354],{"class":72,"line":11353},382,[70,11355,11356],{"class":224},"    \u002F\u002F 从纹理采样颜色\n",[70,11358,11360,11362,11365,11367,11370,11372,11375],{"class":72,"line":11359},383,[70,11361,4395],{"class":196},[70,11363,11364],{"class":200}," textureColor ",[70,11366,309],{"class":76},[70,11368,11369],{"class":196}," vec3",[70,11371,240],{"class":200},[70,11373,11374],{"class":196},"texture",[70,11376,11377],{"class":200},"(material.diffuse, TexCoords));\n",[70,11379,11381,11383,11386,11388,11391,11394,11396],{"class":72,"line":11380},384,[70,11382,1710],{"class":76},[70,11384,11385],{"class":200}," distance    ",[70,11387,309],{"class":76},[70,11389,11390],{"class":196}," length",[70,11392,11393],{"class":200},"(light.position ",[70,11395,1751],{"class":76},[70,11397,11398],{"class":200}," FragPos);\n",[70,11400,11402,11404,11407,11409,11412,11414,11417,11420,11423,11425,11428,11430],{"class":72,"line":11401},385,[70,11403,1710],{"class":76},[70,11405,11406],{"class":200}," attenuation ",[70,11408,309],{"class":76},[70,11410,11411],{"class":275}," 1.0",[70,11413,1009],{"class":76},[70,11415,11416],{"class":200}," (light.constant ",[70,11418,11419],{"class":76},"+",[70,11421,11422],{"class":200}," light.linear ",[70,11424,560],{"class":76},[70,11426,11427],{"class":200}," distance ",[70,11429,11419],{"class":76},[70,11431,11432],{"class":200}," \n",[70,11434,11436,11439,11441,11444,11446],{"class":72,"line":11435},386,[70,11437,11438],{"class":200},"                 light.quadratic ",[70,11440,560],{"class":76},[70,11442,11443],{"class":200}," (distance ",[70,11445,560],{"class":76},[70,11447,11448],{"class":200}," distance));\n",[70,11450,11452],{"class":72,"line":11451},387,[70,11453,11454],{"class":224},"    \u002F\u002F 环境光\n",[70,11456,11458,11460,11463,11465,11468,11470,11473,11475],{"class":72,"line":11457},388,[70,11459,4395],{"class":196},[70,11461,11462],{"class":200}," ambient ",[70,11464,309],{"class":76},[70,11466,11467],{"class":200}," attenuation",[70,11469,560],{"class":76},[70,11471,11472],{"class":200}," light.ambient ",[70,11474,560],{"class":76},[70,11476,11477],{"class":200}," textureColor;\n",[70,11479,11481],{"class":72,"line":11480},389,[70,11482,291],{"class":200},[70,11484,11486],{"class":72,"line":11485},390,[70,11487,11488],{"class":224},"    \u002F\u002F 漫反射\n",[70,11490,11492,11494,11497,11499,11502],{"class":72,"line":11491},391,[70,11493,4395],{"class":196},[70,11495,11496],{"class":200}," norm ",[70,11498,309],{"class":76},[70,11500,11501],{"class":196}," normalize",[70,11503,11504],{"class":200},"(Normal);\n",[70,11506,11508,11510,11513,11515,11517,11519,11521],{"class":72,"line":11507},392,[70,11509,4395],{"class":196},[70,11511,11512],{"class":200}," lightDir ",[70,11514,309],{"class":76},[70,11516,11501],{"class":196},[70,11518,11393],{"class":200},[70,11520,1751],{"class":76},[70,11522,11398],{"class":200},[70,11524,11526,11528,11531,11533,11536,11538,11541,11544,11546],{"class":72,"line":11525},393,[70,11527,1710],{"class":76},[70,11529,11530],{"class":200}," diff ",[70,11532,309],{"class":76},[70,11534,11535],{"class":196}," max",[70,11537,240],{"class":200},[70,11539,11540],{"class":196},"dot",[70,11542,11543],{"class":200},"(norm, lightDir), ",[70,11545,1767],{"class":275},[70,11547,427],{"class":200},[70,11549,11551,11553,11556,11558,11560,11562,11565,11567,11570,11572],{"class":72,"line":11550},394,[70,11552,4395],{"class":196},[70,11554,11555],{"class":200}," diffuse ",[70,11557,309],{"class":76},[70,11559,11467],{"class":200},[70,11561,560],{"class":76},[70,11563,11564],{"class":200}," light.diffuse ",[70,11566,560],{"class":76},[70,11568,11569],{"class":200}," (diff ",[70,11571,560],{"class":76},[70,11573,11574],{"class":200}," textureColor);\n",[70,11576,11578],{"class":72,"line":11577},395,[70,11579,291],{"class":200},[70,11581,11583],{"class":72,"line":11582},396,[70,11584,11585],{"class":224},"    \u002F\u002F 镜面反射\n",[70,11587,11589,11591,11594,11596,11598,11601,11603],{"class":72,"line":11588},397,[70,11590,4395],{"class":196},[70,11592,11593],{"class":200}," viewDir ",[70,11595,309],{"class":76},[70,11597,11501],{"class":196},[70,11599,11600],{"class":200},"(viewPos ",[70,11602,1751],{"class":76},[70,11604,11398],{"class":200},[70,11606,11608,11610,11613,11615,11618,11620,11622],{"class":72,"line":11607},398,[70,11609,4395],{"class":196},[70,11611,11612],{"class":200}," reflectDir ",[70,11614,309],{"class":76},[70,11616,11617],{"class":196}," reflect",[70,11619,240],{"class":200},[70,11621,1751],{"class":76},[70,11623,11624],{"class":200},"lightDir, norm);\n",[70,11626,11628,11630,11633,11635,11638,11640,11643,11645,11647,11650,11652],{"class":72,"line":11627},399,[70,11629,1710],{"class":76},[70,11631,11632],{"class":200}," spec ",[70,11634,309],{"class":76},[70,11636,11637],{"class":196}," pow",[70,11639,240],{"class":200},[70,11641,11642],{"class":196},"max",[70,11644,240],{"class":200},[70,11646,11540],{"class":196},[70,11648,11649],{"class":200},"(viewDir, reflectDir), ",[70,11651,1767],{"class":275},[70,11653,11654],{"class":200},"), material.shininess);\n",[70,11656,11658,11660,11663,11665,11667,11669,11672,11674,11677,11679],{"class":72,"line":11657},400,[70,11659,4395],{"class":196},[70,11661,11662],{"class":200}," specular ",[70,11664,309],{"class":76},[70,11666,11467],{"class":200},[70,11668,560],{"class":76},[70,11670,11671],{"class":200}," light.specular ",[70,11673,560],{"class":76},[70,11675,11676],{"class":200}," (spec ",[70,11678,560],{"class":76},[70,11680,11681],{"class":200}," material.specular);\n",[70,11683,11685],{"class":72,"line":11684},401,[70,11686,291],{"class":200},[70,11688,11690],{"class":72,"line":11689},402,[70,11691,11692],{"class":224},"    \u002F\u002F 最终结果\n",[70,11694,11696,11698,11701,11703,11705,11707,11709,11711],{"class":72,"line":11695},403,[70,11697,4395],{"class":196},[70,11699,11700],{"class":200}," result ",[70,11702,309],{"class":76},[70,11704,11462],{"class":200},[70,11706,11419],{"class":76},[70,11708,11555],{"class":200},[70,11710,11419],{"class":76},[70,11712,11197],{"class":200},[70,11714,11716,11719,11721,11724,11727,11729],{"class":72,"line":11715},404,[70,11717,11718],{"class":200},"    FragColor ",[70,11720,309],{"class":76},[70,11722,11723],{"class":196}," vec4",[70,11725,11726],{"class":200},"(result, ",[70,11728,1780],{"class":275},[70,11730,427],{"class":200},[70,11732,11734],{"class":72,"line":11733},405,[70,11735,532],{"class":200},[10,11737,11738],{"id":11738},"聚光",[13,11740,11741,11742,11745,11746,11749,11750],{},"我们要讨论的最后一种类型的光是",[17,11743,11744],{},"聚光(Spotlight)。聚光是位于环境中某个位置的光源","，它只朝一个特定方向而不是所有方向照射光线。这样的结果就是只有在聚光方向的",[17,11747,11748],{},"特定半径内的物体才会被照亮，其它的物体都会保持黑暗","。",[17,11751,11752],{},"聚光很好的例子就是路灯或手电筒。",[13,11754,11755],{},"OpenGL中聚光是用一个世界空间位置、一个方向和一个切光角(Cutoff Angle)来表示的，切光角指定了聚光的半径（译注：是圆锥的半径不是距光源距离那个半径）。对于每个片段，我们会计算片段是否位于聚光的切光方向之间（也就是在锥形内），如果是的话，我们就会相应地照亮片段。下面这张图会让你明白聚光是如何工作的：",[13,11757,11758],{},[27,11759],{"alt":27,"src":11760},".\u002Fassets\u002Flight_casters_spotlight_angles.png",[5847,11762,11763,11769,11775,11781],{},[5850,11764,11765,11768],{},[67,11766,11767],{},"LightDir","：从片段指向光源的向量。",[5850,11770,11771,11774],{},[67,11772,11773],{},"SpotDir","：聚光所指向的方向。",[5850,11776,11777,11780],{},[67,11778,11779],{},"Phi","ϕ：指定了聚光半径的切光角。落在这个角度之外的物体都不会被这个聚光所照亮。",[5850,11782,11783,11786],{},[67,11784,11785],{},"Theta","θ：LightDir向量和SpotDir向量之间的夹角。在聚光内部的话θ值应该比ϕ值小",[13,11788,11789],{},"所以我们要做的就是计算LightDir向量和SpotDir向量之间的点积（还记得它会返回两个单位向量夹角的余弦值吗？），并将它与切光角ϕ值对比。你现在应该了解聚光究竟是什么了，下面我们将以手电筒的形式创建一个聚光。",[11791,11792,11793],"h2",{"id":11793},"手电筒",[13,11795,11796],{},"手电筒(Flashlight)是一个位于观察者位置的聚光，通常它都会瞄准玩家视角的正前方。基本上说，手电筒就是普通的聚光，但它的位置和方向会随着玩家的位置和朝向不断更新。",[13,11798,11799,11800,11803,11804,11807],{},"所以，在",[17,11801,11802],{},"片段着色器中我们需要的值有聚光的位置向量","（来计算光的方向向量，感觉就像是平行光和点光源合成一样。。。。。）、",[17,11805,11806],{},"聚光的方向向量和一个切光角","。我们可以将它们储存在Light结构体中：",[60,11809,11811],{"className":62,"code":11810,"language":64,"meta":65,"style":65},"struct Light {\n    vec3  position;\n    vec3  direction;\n    float cutOff;\n    ...\n};\n",[67,11812,11813,11821,11828,11835,11842,11847],{"__ignoreMap":65},[70,11814,11815,11817,11819],{"class":72,"line":73},[70,11816,11174],{"class":76},[70,11818,11223],{"class":196},[70,11820,1718],{"class":200},[70,11822,11823,11825],{"class":72,"line":84},[70,11824,4395],{"class":196},[70,11826,11827],{"class":200},"  position;\n",[70,11829,11830,11832],{"class":72,"line":92},[70,11831,4395],{"class":196},[70,11833,11834],{"class":200},"  direction;\n",[70,11836,11837,11839],{"class":72,"line":100},[70,11838,1710],{"class":76},[70,11840,11841],{"class":200}," cutOff;\n",[70,11843,11844],{"class":72,"line":108},[70,11845,11846],{"class":200},"    ...\n",[70,11848,11849],{"class":72,"line":116},[70,11850,3783],{"class":200},[13,11852,11853],{},"接下来我们将合适的值传到着色器中：",[60,11855,11857],{"className":62,"code":11856,"language":64,"meta":65,"style":65},"lightingShader.setVec3(\"light.position\",  camera.Position);\nlightingShader.setVec3(\"light.direction\", camera.Front);\nlightingShader.setFloat(\"light.cutOff\",   glm::cos(glm::radians(12.5f)));\n",[67,11858,11859,11873,11886],{"__ignoreMap":65},[70,11860,11861,11864,11866,11868,11870],{"class":72,"line":73},[70,11862,11863],{"class":200},"lightingShader.",[70,11865,4746],{"class":196},[70,11867,240],{"class":200},[70,11869,10108],{"class":80},[70,11871,11872],{"class":200},",  camera.Position);\n",[70,11874,11875,11877,11879,11881,11883],{"class":72,"line":84},[70,11876,11863],{"class":200},[70,11878,4746],{"class":196},[70,11880,240],{"class":200},[70,11882,4751],{"class":80},[70,11884,11885],{"class":200},", camera.Front);\n",[70,11887,11888,11890,11892,11894,11897,11900,11902,11904,11907,11909,11911,11913,11915,11917,11920,11922],{"class":72,"line":92},[70,11889,11863],{"class":200},[70,11891,4928],{"class":196},[70,11893,240],{"class":200},[70,11895,11896],{"class":80},"\"light.cutOff\"",[70,11898,11899],{"class":200},",   ",[70,11901,5485],{"class":196},[70,11903,1107],{"class":200},[70,11905,11906],{"class":196},"cos",[70,11908,240],{"class":200},[70,11910,5485],{"class":196},[70,11912,1107],{"class":200},[70,11914,988],{"class":196},[70,11916,240],{"class":200},[70,11918,11919],{"class":275},"12.5",[70,11921,635],{"class":76},[70,11923,4073],{"class":200},[13,11925,11926],{},"接下来就是计算θ值，并将它和切光角ϕ对比，来决定是否在聚光的内部：",[60,11928,11930],{"className":62,"code":11929,"language":64,"meta":65,"style":65},"float theta = dot(lightDir, normalize(-light.direction));\n\nif(theta > light.cutOff) \n{       \n  \u002F\u002F 执行光照计算\n}\nelse  \u002F\u002F 否则，使用环境光，让场景在聚光之外时不至于完全黑暗\n  color = vec4(light.ambient * vec3(texture(material.diffuse, TexCoords)), 1.0);\n",[67,11931,11932,11957,11961,11975,11980,11985,11989,11997],{"__ignoreMap":65},[70,11933,11934,11936,11939,11941,11944,11947,11950,11952,11954],{"class":72,"line":73},[70,11935,624],{"class":76},[70,11937,11938],{"class":200}," theta ",[70,11940,309],{"class":76},[70,11942,11943],{"class":196}," dot",[70,11945,11946],{"class":200},"(lightDir, ",[70,11948,11949],{"class":196},"normalize",[70,11951,240],{"class":200},[70,11953,1751],{"class":76},[70,11955,11956],{"class":200},"light.direction));\n",[70,11958,11959],{"class":72,"line":84},[70,11960,184],{"emptyLinePlaceholder":183},[70,11962,11963,11966,11969,11972],{"class":72,"line":92},[70,11964,11965],{"class":76},"if",[70,11967,11968],{"class":200},"(theta ",[70,11970,11971],{"class":76},">",[70,11973,11974],{"class":200}," light.cutOff) \n",[70,11976,11977],{"class":72,"line":100},[70,11978,11979],{"class":200},"{       \n",[70,11981,11982],{"class":72,"line":108},[70,11983,11984],{"class":224},"  \u002F\u002F 执行光照计算\n",[70,11986,11987],{"class":72,"line":116},[70,11988,532],{"class":200},[70,11990,11991,11994],{"class":72,"line":124},[70,11992,11993],{"class":76},"else",[70,11995,11996],{"class":224},"  \u002F\u002F 否则，使用环境光，让场景在聚光之外时不至于完全黑暗\n",[70,11998,11999,12002,12004,12006,12009,12011,12013,12015,12017,12020,12022],{"class":72,"line":132},[70,12000,12001],{"class":200},"  color ",[70,12003,309],{"class":76},[70,12005,11723],{"class":196},[70,12007,12008],{"class":200},"(light.ambient ",[70,12010,560],{"class":76},[70,12012,11369],{"class":196},[70,12014,240],{"class":200},[70,12016,11374],{"class":196},[70,12018,12019],{"class":200},"(material.diffuse, TexCoords)), ",[70,12021,1780],{"class":275},[70,12023,427],{"class":200},[13,12025,12026],{},"我们首先计算了lightDir和取反的direction向量（取反的是因为我们想让向量指向光源而不是从光源出发）之间的点积。记住要对所有的相关向量标准化。",[11791,12028,12030],{"id":12029},"平滑软化边缘","平滑\u002F软化边缘",[13,12032,12033,12034,12037],{},"为了",[17,12035,12036],{},"创建一种看起来边缘平滑的聚光","，我们需要模拟聚光有一个内圆锥(Inner Cone)和一个外圆锥(Outer Cone)。我们可以将内圆锥设置为上一部分中的那个圆锥，但我们也需要一个外圆锥，来让光从内圆锥逐渐减暗，直到外圆锥的边界。",[13,12039,12040],{},"为了创建一个外圆锥，我们只需要再定义一个余弦值来代表聚光方向向量和外圆锥向量（等于它的半径）的夹角。然后，如果一个片段处于内外圆锥之间，将会给它计算出一个0.0到1.0之间的强度值。如果片段在内圆锥之内，它的强度就是1.0，如果在外圆锥之外强度值就是0.0。",[13,12042,12043],{},"我们可以用下面这个公式来计算这个值：",[13,12045,12046],{},[27,12047],{"alt":12048,"src":12049},"image-20251029204700049",".\u002Fassets\u002Fimage-20251029204700049.png",[13,12051,12052],{},"很难去表现这个公式是怎么工作的，所以我们用一些实例值来看看：",[5891,12054,12055,12083],{},[5894,12056,12057],{},[5897,12058,12059,12062,12065,12068,12071,12074,12077,12080],{},[5900,12060,12061],{"align":5902},"θ",[5900,12063,12064],{"align":5902},"θ（角度）",[5900,12066,12067],{"align":5902},"ϕ（内光切）",[5900,12069,12070],{"align":5902},"ϕ（角度）",[5900,12072,12073],{"align":5902},"γ（外光切）",[5900,12075,12076],{"align":5902},"γ（角度）",[5900,12078,12079],{"align":5902},"ϵ",[5900,12081,12082],{"align":5902},"I",[5914,12084,12085,12111,12132,12153,12174,12194],{},[5897,12086,12087,12090,12093,12096,12099,12102,12105,12108],{},[5919,12088,12089],{"align":5902},"0.87",[5919,12091,12092],{"align":5902},"30",[5919,12094,12095],{"align":5902},"0.91",[5919,12097,12098],{"align":5902},"25",[5919,12100,12101],{"align":5902},"0.82",[5919,12103,12104],{"align":5902},"35",[5919,12106,12107],{"align":5902},"0.91 - 0.82 = 0.09",[5919,12109,12110],{"align":5902},"0.87 - 0.82 \u002F 0.09 = 0.56",[5897,12112,12113,12116,12119,12121,12123,12125,12127,12129],{},[5919,12114,12115],{"align":5902},"0.9",[5919,12117,12118],{"align":5902},"26",[5919,12120,12095],{"align":5902},[5919,12122,12098],{"align":5902},[5919,12124,12101],{"align":5902},[5919,12126,12104],{"align":5902},[5919,12128,12107],{"align":5902},[5919,12130,12131],{"align":5902},"0.9 - 0.82 \u002F 0.09 = 0.89",[5897,12133,12134,12137,12140,12142,12144,12146,12148,12150],{},[5919,12135,12136],{"align":5902},"0.97",[5919,12138,12139],{"align":5902},"14",[5919,12141,12095],{"align":5902},[5919,12143,12098],{"align":5902},[5919,12145,12101],{"align":5902},[5919,12147,12104],{"align":5902},[5919,12149,12107],{"align":5902},[5919,12151,12152],{"align":5902},"0.97 - 0.82 \u002F 0.09 = 1.67",[5897,12154,12155,12158,12161,12163,12165,12167,12169,12171],{},[5919,12156,12157],{"align":5902},"0.83",[5919,12159,12160],{"align":5902},"34",[5919,12162,12095],{"align":5902},[5919,12164,12098],{"align":5902},[5919,12166,12101],{"align":5902},[5919,12168,12104],{"align":5902},[5919,12170,12107],{"align":5902},[5919,12172,12173],{"align":5902},"0.83 - 0.82 \u002F 0.09 = 0.11",[5897,12175,12176,12179,12181,12183,12185,12187,12189,12191],{},[5919,12177,12178],{"align":5902},"0.64",[5919,12180,5973],{"align":5902},[5919,12182,12095],{"align":5902},[5919,12184,12098],{"align":5902},[5919,12186,12101],{"align":5902},[5919,12188,12104],{"align":5902},[5919,12190,12107],{"align":5902},[5919,12192,12193],{"align":5902},"0.64 - 0.82 \u002F 0.09 = -2.0",[5897,12195,12196,12199,12202,12205,12207,12210,12213,12216],{},[5919,12197,12198],{"align":5902},"0.966",[5919,12200,12201],{"align":5902},"15",[5919,12203,12204],{"align":5902},"0.9978",[5919,12206,11919],{"align":5902},[5919,12208,12209],{"align":5902},"0.953",[5919,12211,12212],{"align":5902},"17.5",[5919,12214,12215],{"align":5902},"0.9978 - 0.953 = 0.0448",[5919,12217,12218],{"align":5902},"0.966 - 0.953 \u002F 0.0448 = 0.29",[13,12220,12221,12222,12225,12226,12229],{},"我们现在有了一个",[17,12223,12224],{},"在聚光外是负的，在内圆锥内大于1.0的，在边缘处于两者之间的强度值了","。如果我们正确地约束(Clamp)这个值，在片段着色器中就不再需要",[67,12227,12228],{},"if-else","了，我们能够使用计算出来的强度值直接乘以光照分量：",[60,12231,12233],{"className":62,"code":12232,"language":64,"meta":65,"style":65},"float theta     = dot(lightDir, normalize(-light.direction));\nfloat epsilon   = light.cutOff - light.outerCutOff;\nfloat intensity = clamp((theta - light.outerCutOff) \u002F epsilon, 0.0, 1.0);    \n...\n\u002F\u002F 将不对环境光做出影响，让它总是能有一点光\ndiffuse  *= intensity;\nspecular *= intensity;\n...\n",[67,12234,12235,12256,12273,12308,12313,12318,12329,12338],{"__ignoreMap":65},[70,12236,12237,12239,12242,12244,12246,12248,12250,12252,12254],{"class":72,"line":73},[70,12238,624],{"class":76},[70,12240,12241],{"class":200}," theta     ",[70,12243,309],{"class":76},[70,12245,11943],{"class":196},[70,12247,11946],{"class":200},[70,12249,11949],{"class":196},[70,12251,240],{"class":200},[70,12253,1751],{"class":76},[70,12255,11956],{"class":200},[70,12257,12258,12260,12263,12265,12268,12270],{"class":72,"line":84},[70,12259,624],{"class":76},[70,12261,12262],{"class":200}," epsilon   ",[70,12264,309],{"class":76},[70,12266,12267],{"class":200}," light.cutOff ",[70,12269,1751],{"class":76},[70,12271,12272],{"class":200}," light.outerCutOff;\n",[70,12274,12275,12277,12280,12282,12285,12288,12290,12293,12296,12299,12301,12303,12305],{"class":72,"line":92},[70,12276,624],{"class":76},[70,12278,12279],{"class":200}," intensity ",[70,12281,309],{"class":76},[70,12283,12284],{"class":196}," clamp",[70,12286,12287],{"class":200},"((theta ",[70,12289,1751],{"class":76},[70,12291,12292],{"class":200}," light.outerCutOff) ",[70,12294,12295],{"class":76},"\u002F",[70,12297,12298],{"class":200}," epsilon, ",[70,12300,1767],{"class":275},[70,12302,279],{"class":200},[70,12304,1780],{"class":275},[70,12306,12307],{"class":200},");    \n",[70,12309,12310],{"class":72,"line":100},[70,12311,12312],{"class":200},"...\n",[70,12314,12315],{"class":72,"line":108},[70,12316,12317],{"class":224},"\u002F\u002F 将不对环境光做出影响，让它总是能有一点光\n",[70,12319,12320,12323,12326],{"class":72,"line":116},[70,12321,12322],{"class":200},"diffuse  ",[70,12324,12325],{"class":76},"*=",[70,12327,12328],{"class":200}," intensity;\n",[70,12330,12331,12334,12336],{"class":72,"line":124},[70,12332,12333],{"class":200},"specular ",[70,12335,12325],{"class":76},[70,12337,12328],{"class":200},[70,12339,12340],{"class":72,"line":132},[70,12341,12312],{"class":200},[13,12343,12344,12345,12348],{},"注意我们使用了clamp函数，它把第一个参数约束(Clamp)在了0.0到1.0之间。这保证强度值不会在",[70,12346,12347],{},"0, 1","区间之外。",[13,12350,12351,12352],{},"确定你将outerCutOff值添加到了Light结构体之中，并在程序中设置它的uniform值。下面的图片中，我们使用的内切光角是12.5，外切光角是17.5：",[27,12353],{"alt":27,"src":12354},".\u002Fassets\u002Flight_casters_spotlight.png",[13,12356,12357],{},"完整代码：",[60,12359,12361],{"className":62,"code":12360,"language":64,"meta":65,"style":65},"#include \u003Cglad\u002Fglad.h>\n#include \u003CGLFW\u002Fglfw3.h>\n#include \u003Ciostream>\n#include \u003Ccmath>\n#include \u003Cimgui.h>\n#include \u003Cimgui_impl_glfw.h>\n#include \u003Cimgui_impl_opengl3.h>\n#include \u003Copencv2\u002Fopencv.hpp>\n#include \u003Copencv2\u002Fimgcodecs.hpp>\n#include \"utils\u002Fshader.h\"\n#include \"utils\u002FglmCompute.h\"\n#include \"include\u002Fdpi_stabilizer.h\"\n#include \"include\u002Fimgui_manager.h\"\n\nusing namespace glm;\nusing namespace cv;\n\n\u002F\u002F 使用 OpenCV 加载纹理\nunsigned int loadTexture(const char* path) {\n    unsigned int textureID;\n    glGenTextures(1, &textureID);\n    \n    \u002F\u002F 使用 OpenCV 读取图像\n    Mat image = imread(path, IMREAD_COLOR);\n    if (image.empty()) {\n        std::cout \u003C\u003C \"Failed to load texture at path: \" \u003C\u003C path \u003C\u003C std::endl;\n        return textureID;\n    }\n    \n    \u002F\u002F OpenCV 使用 BGR，OpenGL 使用 RGB，需要转换\n    Mat rgbImage;\n    cvtColor(image, rgbImage, COLOR_BGR2RGB);\n    \n    \u002F\u002F 翻转图像（OpenGL 期望的 Y 轴方向）\n    flip(rgbImage, rgbImage, 0);\n    \n    glBindTexture(GL_TEXTURE_2D, textureID);\n    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, rgbImage.cols, rgbImage.rows, 0, GL_RGB, GL_UNSIGNED_BYTE, rgbImage.data);\n    glGenerateMipmap(GL_TEXTURE_2D);\n    \n    \u002F\u002F 设置纹理参数\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);\n    \n    return textureID;\n}\n\n\u002F\u002F 窗口大小改变时的回调函数\nvoid framebuffer_size_callback(GLFWwindow* window, int width, int height) {\n    glViewport(0, 0, width, height);\n}\n\n\n\u002F\u002F 全局变量\nfloat deltaTime = 0.0f; \u002F\u002F 当前帧与上一帧的时间差\nfloat lastFrame = 0.0f; \u002F\u002F 上一帧的时间\n\n\u002F\u002F DPI 稳定器实例\nDPIStabilizer dpiStabilizer(0.1f, 50.0f, 0.8f);\n\n\u002F\u002F ImGui 管理器实例\nImGuiManager imguiManager;\n\n\u002F\u002F 简化的输入处理函数\nvoid processInput(GLFWwindow *window){\n    \u002F\u002F 使用 DPI 稳定器处理所有输入\n    dpiStabilizer.processKeyboardInput(window);\n\n    if (glfwGetKey(window, GLFW_KEY_F2) == GLFW_PRESS) {\n        imguiManager.toggleWindow(\"控制面板\");\n    }\n    if (glfwGetKey(window, GLFW_KEY_F3) == GLFW_PRESS) {\n        imguiManager.toggleWindow(\"性能监控\");\n    }\n    if (glfwGetKey(window, GLFW_KEY_F4) == GLFW_PRESS) {\n        imguiManager.toggleWindow(\"调试信息\");\n    }\n    \n    \u002F\u002F 显示统计信息 (按 T 键)\n    if (glfwGetKey(window, GLFW_KEY_T) == GLFW_PRESS) {\n        std::cout \u003C\u003C dpiStabilizer.getStats() \u003C\u003C std::endl;\n    }\n}\n\nint main() {\n    \u002F\u002F 投影矩阵\n    mat4 projection = perspective(radians(45.0f), (float)800 \u002F (float)600, 0.1f, 100.0f);\n\n    \u002F\u002F 初始化GLFW\n    glfwInit();\n    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);\n    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);\n    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);\n    \n    \u002F\u002F 设置 DPI 感知提示\n    DPIStabilizer::setDPIHint();\n\n    \u002F\u002F 创建窗口\n    GLFWwindow* window = glfwCreateWindow(800, 600, \"OpenGL Window\", NULL, NULL);\n    if (window == NULL) {\n        std::cout \u003C\u003C \"Failed to create GLFW window\" \u003C\u003C std::endl;\n        glfwTerminate();\n        return -1;\n    }\n\n    glfwMakeContextCurrent(window);\n    glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);\n    \n    \u002F\u002F 初始化 DPI 稳定器\n    dpiStabilizer.initialize(window);\n\n    \u002F\u002F 初始化GLAD\n    if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {\n        std::cout \u003C\u003C \"Failed to initialize GLAD\" \u003C\u003C std::endl;\n        return -1;\n    }\n\n    \u002F\u002F 初始化 ImGui 管理器\n    imguiManager.initialize(window);\n    \n    \u002F\u002F 注册窗口\n    imguiManager.registerWindow(\"Hello ImGui!\", []() {\n        ImGui::Text(\"DPI 稳定器状态: %s\", dpiStabilizer.isMouseCaptured() ? \"已捕获\" : \"已释放\");\n        ImGui::Text(\"鼠标敏感度: %.3f\", dpiStabilizer.getSensitivity());\n        \n        if (ImGui::Button(\"重置统计\")) {\n            dpiStabilizer.resetStats();\n        }\n        \n        float sensitivity = dpiStabilizer.getSensitivity();\n        if (ImGui::SliderFloat(\"鼠标敏感度\", &sensitivity, 0.01f, 0.5f)) {\n            dpiStabilizer.setSensitivity(sensitivity);\n        }\n    });\n    \n    imguiManager.registerWindow(\"控制面板\", []() {\n        ImGuiIO& io = ImGui::GetIO();\n        ImGui::Text(\"FPS: %.1f\", io.Framerate);\n        ImGui::Text(\"帧时间: %.3f ms\", 1000.0f \u002F io.Framerate);\n    });\n    \n\n    \u002F\u002F 启用深度测试\n    glEnable(GL_DEPTH_TEST);\n\n    float vertices[] = {\n    \u002F\u002F 立方体顶点数据（位置 + 法线 + 纹理坐标）\n    \u002F\u002F 位置(3) + 法线(3) + 纹理坐标(2) = 8个浮点数\n    \u002F\u002F 前面\n    -0.5f, -0.5f,  0.5f,  0.0f,  0.0f,  1.0f,  0.0f, 0.0f,\n     0.5f, -0.5f,  0.5f,  0.0f,  0.0f,  1.0f,  1.0f, 0.0f,\n     0.5f,  0.5f,  0.5f,  0.0f,  0.0f,  1.0f,  1.0f, 1.0f,\n     0.5f,  0.5f,  0.5f,  0.0f,  0.0f,  1.0f,  1.0f, 1.0f,\n    -0.5f,  0.5f,  0.5f,  0.0f,  0.0f,  1.0f,  0.0f, 1.0f,\n    -0.5f, -0.5f,  0.5f,  0.0f,  0.0f,  1.0f,  0.0f, 0.0f,\n    \n    \u002F\u002F 后面\n    -0.5f, -0.5f, -0.5f,  0.0f,  0.0f, -1.0f,  0.0f, 0.0f,\n     0.5f, -0.5f, -0.5f,  0.0f,  0.0f, -1.0f,  1.0f, 0.0f,\n     0.5f,  0.5f, -0.5f,  0.0f,  0.0f, -1.0f,  1.0f, 1.0f,\n     0.5f,  0.5f, -0.5f,  0.0f,  0.0f, -1.0f,  1.0f, 1.0f,\n    -0.5f,  0.5f, -0.5f,  0.0f,  0.0f, -1.0f,  0.0f, 1.0f,\n    -0.5f, -0.5f, -0.5f,  0.0f,  0.0f, -1.0f,  0.0f, 0.0f,\n    \n    \u002F\u002F 左面\n    -0.5f,  0.5f,  0.5f, -1.0f,  0.0f,  0.0f,  1.0f, 0.0f,\n    -0.5f,  0.5f, -0.5f, -1.0f,  0.0f,  0.0f,  1.0f, 1.0f,\n    -0.5f, -0.5f, -0.5f, -1.0f,  0.0f,  0.0f,  0.0f, 1.0f,\n    -0.5f, -0.5f, -0.5f, -1.0f,  0.0f,  0.0f,  0.0f, 1.0f,\n    -0.5f, -0.5f,  0.5f, -1.0f,  0.0f,  0.0f,  0.0f, 0.0f,\n    -0.5f,  0.5f,  0.5f, -1.0f,  0.0f,  0.0f,  1.0f, 0.0f,\n    \n    \u002F\u002F 右面\n     0.5f,  0.5f,  0.5f,  1.0f,  0.0f,  0.0f,  1.0f, 0.0f,\n     0.5f,  0.5f, -0.5f,  1.0f,  0.0f,  0.0f,  1.0f, 1.0f,\n     0.5f, -0.5f, -0.5f,  1.0f,  0.0f,  0.0f,  0.0f, 1.0f,\n     0.5f, -0.5f, -0.5f,  1.0f,  0.0f,  0.0f,  0.0f, 1.0f,\n     0.5f, -0.5f,  0.5f,  1.0f,  0.0f,  0.0f,  0.0f, 0.0f,\n     0.5f,  0.5f,  0.5f,  1.0f,  0.0f,  0.0f,  1.0f, 0.0f,\n    \n    \u002F\u002F 下面\n    -0.5f, -0.5f, -0.5f,  0.0f, -1.0f,  0.0f,  0.0f, 1.0f,\n     0.5f, -0.5f, -0.5f,  0.0f, -1.0f,  0.0f,  1.0f, 1.0f,\n     0.5f, -0.5f,  0.5f,  0.0f, -1.0f,  0.0f,  1.0f, 0.0f,\n     0.5f, -0.5f,  0.5f,  0.0f, -1.0f,  0.0f,  1.0f, 0.0f,\n    -0.5f, -0.5f,  0.5f,  0.0f, -1.0f,  0.0f,  0.0f, 0.0f,\n    -0.5f, -0.5f, -0.5f,  0.0f, -1.0f,  0.0f,  0.0f, 1.0f,\n    \n    \u002F\u002F 上面\n    -0.5f,  0.5f, -0.5f,  0.0f,  1.0f,  0.0f,  0.0f, 1.0f,\n     0.5f,  0.5f, -0.5f,  0.0f,  1.0f,  0.0f,  1.0f, 1.0f,\n     0.5f,  0.5f,  0.5f,  0.0f,  1.0f,  0.0f,  1.0f, 0.0f,\n     0.5f,  0.5f,  0.5f,  0.0f,  1.0f,  0.0f,  1.0f, 0.0f,\n    -0.5f,  0.5f,  0.5f,  0.0f,  1.0f,  0.0f,  0.0f, 0.0f,\n    -0.5f,  0.5f, -0.5f,  0.0f,  1.0f,  0.0f,  0.0f, 1.0f\n};\n    \n    \u002F\u002F 创建VAO\n    unsigned int VAO;\n    glGenVertexArrays(1, &VAO);\n    glBindVertexArray(VAO); \u002F\u002F 绑定VAO\n\n    \u002F\u002F 创建VBO\n    unsigned int VBO;\n    glGenBuffers(1, &VBO);\n    glBindBuffer(GL_ARRAY_BUFFER, VBO); \u002F\u002F 绑定VBO\n    glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);\n\n    int nrAttributes;\n    glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &nrAttributes);\n    std::cout \u003C\u003C \"Maximum nr of vertex attributes supported: \" \u003C\u003C nrAttributes \u003C\u003C std::endl;\n\n    \u002F\u002F 位置属性\n    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)0);\n    glEnableVertexAttribArray(0); \u002F\u002F 启用顶点属性\n    \n    \u002F\u002F 法线属性\n    glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(3 * sizeof(float)));\n    glEnableVertexAttribArray(1); \u002F\u002F 启用法线属性\n    \n    \u002F\u002F 纹理坐标属性\n    glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(6 * sizeof(float)));\n    glEnableVertexAttribArray(2); \u002F\u002F 启用纹理坐标属性\n\n    \u002F\u002F 构建并编译着色器程序\n    Shader lightingShader(\"shader\u002Flighting.vert\", \"shader\u002Flighting.frag\");\n    Shader lampShader(\"shader\u002Flamp.vert\", \"shader\u002Flamp.frag\");\n\n    \u002F\u002F 加载纹理\n    unsigned int texture1 = loadTexture(\"Assets\u002Fimage.png\");\n    if (texture1 == 0) {\n        std::cout \u003C\u003C \"Failed to load texture\" \u003C\u003C std::endl;\n    }\n\n    \u002F\u002F 创建光源的 VAO\n    unsigned int lightVAO;\n    glGenVertexArrays(1, &lightVAO);\n    glBindVertexArray(lightVAO);\n    glBindBuffer(GL_ARRAY_BUFFER, VBO);\n    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)0);\n    glEnableVertexAttribArray(0);\n\n    \u002F\u002F 光源位置\n    vec3 lightPos(1.2f, 1.0f, 2.0f);\n    \n    \u002F\u002F 相机位置（观察空间）\n    vec3 viewPos = dpiStabilizer.getCameraPosition();\n\n    \u002F\u002F 渲染循环\n    while (!glfwWindowShouldClose(window)) {\n        \u002F\u002F 处理输入\n        processInput(window);\n        glfwPollEvents();\n\n        \u002F\u002F 从 DPI 稳定器获取 view 矩阵\n        mat4 view = dpiStabilizer.getViewMatrix();\n        \n        float currentFrame = glfwGetTime();\n        deltaTime = currentFrame - lastFrame;\n        lastFrame = currentFrame;\n\n        \u002F\u002F 渲染指令\n        glClearColor(0.2f, 0.3f, 0.3f, 1.0f);\n        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);\n        \n        \u002F\u002F 使用光照着色器绘制物体\n        lightingShader.use();\n        \n        \u002F\u002F 绑定纹理\n        glActiveTexture(GL_TEXTURE0);\n        glBindTexture(GL_TEXTURE_2D, texture1);\n        lightingShader.setInt(\"material.diffuse\", 0);\n        \n        \u002F\u002F 设置相机位置（观察空间）\n        vec3 currentViewPos = dpiStabilizer.getCameraPosition();\n        vec3 cameraFront = dpiStabilizer.getCameraFront();\n        \n        lightingShader.setMat4(\"projection\", projection);\n        lightingShader.setMat4(\"view\", view);\n        \n        \u002F\u002F 手电筒效果：使用相机位置和朝向\n        lightingShader.setVec3(\"light.position\", currentViewPos.x, currentViewPos.y, currentViewPos.z);\n        lightingShader.setVec3(\"light.direction\", cameraFront.x, cameraFront.y, cameraFront.z);\n        lightingShader.setFloat(\"light.cutOff\", glm::cos(glm::radians(12.5f))); \u002F\u002F 内切角\n        lightingShader.setFloat(\"light.outerCutOff\", glm::cos(glm::radians(17.5f))); \u002F\u002F 外切角\n        lightingShader.setFloat(\"light.constant\", 1.0f);\n        lightingShader.setFloat(\"light.linear\", 0.09f);\n        lightingShader.setFloat(\"light.quadratic\", 0.032f);\n        lightingShader.setVec3(\"light.ambient\",  0.1f, 0.1f, 0.1f);   \u002F\u002F 降低环境光强度，只有聚光灯照到的地方才亮\n        lightingShader.setVec3(\"light.diffuse\",  1.0f, 1.0f, 1.0f);   \u002F\u002F 漫反射强度\n        lightingShader.setVec3(\"light.specular\", 1.0f, 1.0f, 1.0f); \n        lightingShader.setVec3(\"material.specular\", 0.633f, 0.727811f, 0.633f);\n        \u002F\u002F 高光指数：通常乘以 128 (OpenGL 最大的 1.0 对应 128)\n        lightingShader.setFloat(\"material.shininess\", 0.6f * 128.0f); \u002F\u002F 76.8\n        \n        \u002F\u002F 设置相机位置（用于镜面反射计算）\n        lightingShader.setVec3(\"viewPos\", currentViewPos.x, currentViewPos.y, currentViewPos.z);\n        \n        glBindVertexArray(VAO);\n        \n        \u002F\u002F 定义多个立方体的位置（更分散的布局）\n        glm::vec3 cubePositions[] = {\n            glm::vec3( 0.0f,  0.0f,  0.0f),\n            glm::vec3( 4.0f,  0.0f,  0.0f),\n            glm::vec3(-4.0f,  0.0f,  0.0f),\n            glm::vec3( 0.0f,  0.0f, -8.0f),\n            glm::vec3( 0.0f,  0.0f,  8.0f),\n            glm::vec3( 8.0f,  0.0f, -8.0f),\n            glm::vec3(-10.0f,  0.0f, -2.0f),\n            glm::vec3( 2.0f,  0.0f,  2.0f),\n            glm::vec3(-2.0f,  0.0f,  2.0f),\n            glm::vec3( 0.0f,  2.0f,  0.0f)\n        };\n        \n        for(unsigned int i = 0; i \u003C 10; i++)\n        {\n            glm::mat4 model = glm::mat4(1.0f);\n            model = glm::translate(model, cubePositions[i]);\n            float angle = 20.0f * i;\n            model = glm::rotate(model, glm::radians(angle), glm::vec3(1.0f, 0.3f, 0.5f));\n            lightingShader.setMat4(\"model\", model);\n\n            glDrawArrays(GL_TRIANGLES, 0, 36);\n        }\n\n        \u002F\u002F 点光源立方体绘制（手电筒不需要显示光源立方体，已注释）\n        \u002F*\n        lampShader.use();\n        lampShader.setMat4(\"projection\", projection);\n        lampShader.setMat4(\"view\", view);\n        \n        \u002F\u002F 光源立方体的模型矩阵\n        mat4 lampModel = mat4(1.0f);\n        lampModel = translate(lampModel, lightPos);\n        lampModel = scale(lampModel, vec3(0.2f)); \u002F\u002F 缩小光源立方体\n        lampShader.setMat4(\"model\", lampModel);\n        \n        glBindVertexArray(lightVAO);\n        glDrawArrays(GL_TRIANGLES, 0, 36);\n        *\u002F\n        \n        \u002F\u002F 使用 ImGui 管理器渲染所有窗口\n        imguiManager.render();\n\n        \u002F\u002F 交换缓冲区和检查IO事件\n        glfwSwapBuffers(window);\n    }\n\n    \u002F\u002F 清理 ImGui 管理器\n    imguiManager.shutdown();\n\n    \u002F\u002F 清理资源\n    glDeleteVertexArrays(1, &VAO);\n    glDeleteVertexArrays(1, &lightVAO);\n    glDeleteBuffers(1, &VBO);\n    glDeleteTextures(1, &texture1);\n    glfwTerminate();\n    return 0;\n}\n\n#version 330 core\nout vec4 FragColor;\n\nstruct Material{\n    sampler2D diffuse;\n    vec3 specular;\n    float shininess;\n};\n\nstruct Light{\n    vec3 position;\n    vec3 direction;\n    float cutOff;\n    float outerCutOff;\n    vec3 ambient;\n    vec3 diffuse;\n    vec3 specular;\n\n    float constant;\n    float linear;\n    float quadratic;\n};\n\nuniform Light light;\nuniform vec3 viewPos;\nuniform Material material;\nin vec3 Normal;\nin vec3 FragPos;\nin vec2 TexCoords;\n\nvoid main()\n{\n    \u002F\u002F 从纹理采样颜色\n    vec3 textureColor = vec3(texture(material.diffuse, TexCoords));\n    \n    \u002F\u002F 计算距离衰减\n    float distance = length(light.position - FragPos);\n    float attenuation = 1.0 \u002F (light.constant + light.linear * distance + \n                                light.quadratic * (distance * distance));\n    \n    \u002F\u002F 环境光（先计算，因为无论是否在聚光灯范围内都需要）\n    vec3 ambient = light.ambient * textureColor;\n    \n    \u002F\u002F 计算聚光灯效果（手电筒）\n    vec3 lightDir = normalize(FragPos - light.position); \u002F\u002F 从光源指向片段的方向\n    vec3 spotDir = normalize(light.direction); \u002F\u002F 手电筒的朝向方向（相机朝向）\n    float theta = dot(lightDir, spotDir); \u002F\u002F 计算角度（点积），如果 theta > cutOff 说明在聚光灯范围内\n    \n    \u002F\u002F 计算聚光灯强度（使用 clamp 方法，无需 if-else）\n    float intensity = clamp((theta - light.outerCutOff) \u002F (light.cutOff - light.outerCutOff), 0.0, 1.0);\n    \n    \u002F\u002F 计算漫反射和镜面反射（无论强度如何都计算）\n    vec3 norm = normalize(Normal);\n    float diff = max(dot(norm, -lightDir), 0.0); \u002F\u002F -lightDir 是从片段指向光源\n    vec3 diffuse = light.diffuse * (diff * textureColor);\n    \n    \u002F\u002F 镜面反射\n    vec3 viewDir = normalize(viewPos - FragPos);\n    vec3 reflectDir = reflect(lightDir, norm); \u002F\u002F lightDir 是从光源指向片段（入射方向）\n    float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess);\n    vec3 specular = light.specular * (spec * material.specular);\n    \n    \u002F\u002F 应用衰减和聚光灯强度\n    diffuse *= attenuation * intensity;\n    specular *= attenuation * intensity;\n    \n    \u002F\u002F 最终结果\n    vec3 result = ambient + diffuse + specular;\n    FragColor = vec4(result, 1.0);\n}\n\n\n",[67,12362,12363,12369,12375,12381,12387,12393,12399,12405,12411,12417,12423,12429,12435,12441,12445,12455,12465,12469,12473,12491,12499,12513,12517,12521,12533,12543,12563,12569,12573,12577,12581,12587,12593,12597,12601,12611,12615,12621,12635,12641,12645,12649,12655,12661,12667,12673,12677,12683,12687,12691,12695,12723,12737,12741,12745,12749,12753,12769,12785,12789,12793,12819,12823,12827,12831,12835,12839,12855,12859,12867,12871,12885,12897,12901,12915,12927,12931,12945,12957,12961,12965,12969,12983,13003,13007,13011,13015,13023,13027,13079,13083,13087,13093,13103,13113,13119,13123,13127,13137,13141,13145,13179,13191,13207,13213,13223,13227,13231,13237,13243,13247,13251,13259,13263,13267,13279,13295,13305,13309,13313,13317,13325,13329,13333,13345,13377,13399,13403,13421,13429,13433,13437,13451,13485,13493,13497,13501,13505,13517,13535,13553,13579,13583,13587,13591,13595,13601,13605,13615,13619,13623,13627,13681,13733,13783,13833,13885,13939,13943,13947,14005,14061,14115,14169,14225,14283,14287,14291,14345,14401,14459,14517,14573,14627,14631,14635,14685,14737,14791,14845,14897,14947,14951,14955,15013,15069,15123,15177,15233,15291,15295,15299,15353,15405,15455,15505,15557,15609,15613,15617,15621,15629,15643,15651,15655,15659,15667,15681,15689,15699,15703,15709,15719,15739,15743,15747,15781,15793,15797,15801,15843,15855,15859,15863,15905,15917,15921,15925,15941,15957,15961,15965,15983,15995,16011,16015,16019,16023,16031,16045,16051,16057,16091,16101,16105,16109,16135,16139,16143,16157,16161,16165,16177,16181,16187,16193,16197,16201,16215,16219,16231,16243,16251,16255,16259,16289,16299,16303,16307,16315,16319,16323,16329,16335,16351,16355,16359,16373,16389,16393,16405,16417,16421,16426,16438,16451,16489,16527,16545,16563,16581,16614,16647,16677,16707,16711,16737,16741,16746,16758,16762,16768,16772,16776,16790,16818,16846,16876,16906,16934,16964,16996,17024,17054,17082,17086,17090,17118,17122,17148,17162,17178,17226,17238,17242,17256,17260,17264,17269,17273,17277,17281,17285,17289,17293,17297,17301,17305,17309,17313,17317,17321,17325,17329,17333,17341,17345,17349,17355,17359,17363,17367,17375,17379,17383,17397,17411,17425,17439,17445,17453,17457,17461,17469,17473,17477,17485,17491,17497,17503,17507,17511,17519,17525,17532,17538,17545,17551,17557,17563,17567,17573,17579,17585,17589,17593,17597,17601,17605,17609,17613,17617,17621,17629,17633,17637,17653,17657,17662,17678,17704,17717,17721,17726,17740,17744,17750,17772,17790,17807,17812,17818,17853,17858,17864,17877,17907,17926,17931,17936,17953,17970,17995,18014,18019,18025,18039,18053,18058,18063,18082,18097],{"__ignoreMap":65},[70,12364,12365,12367],{"class":72,"line":73},[70,12366,77],{"class":76},[70,12368,81],{"class":80},[70,12370,12371,12373],{"class":72,"line":84},[70,12372,77],{"class":76},[70,12374,89],{"class":80},[70,12376,12377,12379],{"class":72,"line":92},[70,12378,77],{"class":76},[70,12380,97],{"class":80},[70,12382,12383,12385],{"class":72,"line":100},[70,12384,77],{"class":76},[70,12386,105],{"class":80},[70,12388,12389,12391],{"class":72,"line":108},[70,12390,77],{"class":76},[70,12392,113],{"class":80},[70,12394,12395,12397],{"class":72,"line":116},[70,12396,77],{"class":76},[70,12398,121],{"class":80},[70,12400,12401,12403],{"class":72,"line":124},[70,12402,77],{"class":76},[70,12404,129],{"class":80},[70,12406,12407,12409],{"class":72,"line":132},[70,12408,77],{"class":76},[70,12410,137],{"class":80},[70,12412,12413,12415],{"class":72,"line":140},[70,12414,77],{"class":76},[70,12416,145],{"class":80},[70,12418,12419,12421],{"class":72,"line":148},[70,12420,77],{"class":76},[70,12422,153],{"class":80},[70,12424,12425,12427],{"class":72,"line":156},[70,12426,77],{"class":76},[70,12428,161],{"class":80},[70,12430,12431,12433],{"class":72,"line":164},[70,12432,77],{"class":76},[70,12434,169],{"class":80},[70,12436,12437,12439],{"class":72,"line":172},[70,12438,77],{"class":76},[70,12440,177],{"class":80},[70,12442,12443],{"class":72,"line":180},[70,12444,184],{"emptyLinePlaceholder":183},[70,12446,12447,12449,12451,12453],{"class":72,"line":187},[70,12448,190],{"class":76},[70,12450,193],{"class":76},[70,12452,197],{"class":196},[70,12454,201],{"class":200},[70,12456,12457,12459,12461,12463],{"class":72,"line":204},[70,12458,190],{"class":76},[70,12460,193],{"class":76},[70,12462,211],{"class":196},[70,12464,201],{"class":200},[70,12466,12467],{"class":72,"line":216},[70,12468,184],{"emptyLinePlaceholder":183},[70,12470,12471],{"class":72,"line":221},[70,12472,225],{"class":224},[70,12474,12475,12477,12479,12481,12483,12485,12487,12489],{"class":72,"line":228},[70,12476,231],{"class":76},[70,12478,234],{"class":76},[70,12480,237],{"class":196},[70,12482,240],{"class":200},[70,12484,243],{"class":76},[70,12486,246],{"class":76},[70,12488,250],{"class":249},[70,12490,253],{"class":200},[70,12492,12493,12495,12497],{"class":72,"line":256},[70,12494,259],{"class":76},[70,12496,234],{"class":76},[70,12498,264],{"class":200},[70,12500,12501,12503,12505,12507,12509,12511],{"class":72,"line":267},[70,12502,270],{"class":196},[70,12504,240],{"class":200},[70,12506,276],{"class":275},[70,12508,279],{"class":200},[70,12510,282],{"class":76},[70,12512,285],{"class":200},[70,12514,12515],{"class":72,"line":288},[70,12516,291],{"class":200},[70,12518,12519],{"class":72,"line":294},[70,12520,297],{"class":224},[70,12522,12523,12525,12527,12529,12531],{"class":72,"line":300},[70,12524,303],{"class":196},[70,12526,306],{"class":200},[70,12528,309],{"class":76},[70,12530,312],{"class":196},[70,12532,315],{"class":200},[70,12534,12535,12537,12539,12541],{"class":72,"line":318},[70,12536,321],{"class":76},[70,12538,324],{"class":200},[70,12540,327],{"class":196},[70,12542,330],{"class":200},[70,12544,12545,12547,12549,12551,12553,12555,12557,12559,12561],{"class":72,"line":333},[70,12546,336],{"class":196},[70,12548,339],{"class":200},[70,12550,342],{"class":76},[70,12552,345],{"class":80},[70,12554,348],{"class":76},[70,12556,351],{"class":200},[70,12558,342],{"class":76},[70,12560,356],{"class":196},[70,12562,359],{"class":200},[70,12564,12565,12567],{"class":72,"line":362},[70,12566,365],{"class":76},[70,12568,264],{"class":200},[70,12570,12571],{"class":72,"line":370},[70,12572,373],{"class":200},[70,12574,12575],{"class":72,"line":376},[70,12576,291],{"class":200},[70,12578,12579],{"class":72,"line":381},[70,12580,384],{"class":224},[70,12582,12583,12585],{"class":72,"line":387},[70,12584,303],{"class":196},[70,12586,392],{"class":200},[70,12588,12589,12591],{"class":72,"line":395},[70,12590,398],{"class":196},[70,12592,401],{"class":200},[70,12594,12595],{"class":72,"line":404},[70,12596,291],{"class":200},[70,12598,12599],{"class":72,"line":409},[70,12600,412],{"class":224},[70,12602,12603,12605,12607,12609],{"class":72,"line":415},[70,12604,418],{"class":196},[70,12606,421],{"class":200},[70,12608,424],{"class":275},[70,12610,427],{"class":200},[70,12612,12613],{"class":72,"line":430},[70,12614,291],{"class":200},[70,12616,12617,12619],{"class":72,"line":435},[70,12618,438],{"class":196},[70,12620,441],{"class":200},[70,12622,12623,12625,12627,12629,12631,12633],{"class":72,"line":444},[70,12624,447],{"class":196},[70,12626,450],{"class":200},[70,12628,424],{"class":275},[70,12630,455],{"class":200},[70,12632,424],{"class":275},[70,12634,460],{"class":200},[70,12636,12637,12639],{"class":72,"line":463},[70,12638,466],{"class":196},[70,12640,469],{"class":200},[70,12642,12643],{"class":72,"line":472},[70,12644,291],{"class":200},[70,12646,12647],{"class":72,"line":477},[70,12648,480],{"class":224},[70,12650,12651,12653],{"class":72,"line":483},[70,12652,486],{"class":196},[70,12654,489],{"class":200},[70,12656,12657,12659],{"class":72,"line":492},[70,12658,486],{"class":196},[70,12660,497],{"class":200},[70,12662,12663,12665],{"class":72,"line":500},[70,12664,486],{"class":196},[70,12666,505],{"class":200},[70,12668,12669,12671],{"class":72,"line":508},[70,12670,486],{"class":196},[70,12672,513],{"class":200},[70,12674,12675],{"class":72,"line":516},[70,12676,291],{"class":200},[70,12678,12679,12681],{"class":72,"line":521},[70,12680,524],{"class":76},[70,12682,264],{"class":200},[70,12684,12685],{"class":72,"line":529},[70,12686,532],{"class":200},[70,12688,12689],{"class":72,"line":535},[70,12690,184],{"emptyLinePlaceholder":183},[70,12692,12693],{"class":72,"line":540},[70,12694,543],{"class":224},[70,12696,12697,12699,12701,12703,12705,12707,12709,12711,12713,12715,12717,12719,12721],{"class":72,"line":546},[70,12698,549],{"class":76},[70,12700,552],{"class":196},[70,12702,240],{"class":200},[70,12704,557],{"class":196},[70,12706,560],{"class":76},[70,12708,563],{"class":249},[70,12710,279],{"class":200},[70,12712,568],{"class":76},[70,12714,571],{"class":249},[70,12716,279],{"class":200},[70,12718,568],{"class":76},[70,12720,578],{"class":249},[70,12722,253],{"class":200},[70,12724,12725,12727,12729,12731,12733,12735],{"class":72,"line":583},[70,12726,586],{"class":196},[70,12728,240],{"class":200},[70,12730,424],{"class":275},[70,12732,279],{"class":200},[70,12734,424],{"class":275},[70,12736,597],{"class":200},[70,12738,12739],{"class":72,"line":600},[70,12740,532],{"class":200},[70,12742,12743],{"class":72,"line":605},[70,12744,184],{"emptyLinePlaceholder":183},[70,12746,12747],{"class":72,"line":610},[70,12748,184],{"emptyLinePlaceholder":183},[70,12750,12751],{"class":72,"line":615},[70,12752,618],{"class":224},[70,12754,12755,12757,12759,12761,12763,12765,12767],{"class":72,"line":621},[70,12756,624],{"class":76},[70,12758,627],{"class":200},[70,12760,309],{"class":76},[70,12762,632],{"class":275},[70,12764,635],{"class":76},[70,12766,638],{"class":200},[70,12768,641],{"class":224},[70,12770,12771,12773,12775,12777,12779,12781,12783],{"class":72,"line":644},[70,12772,624],{"class":76},[70,12774,649],{"class":200},[70,12776,309],{"class":76},[70,12778,632],{"class":275},[70,12780,635],{"class":76},[70,12782,638],{"class":200},[70,12784,660],{"class":224},[70,12786,12787],{"class":72,"line":663},[70,12788,184],{"emptyLinePlaceholder":183},[70,12790,12791],{"class":72,"line":668},[70,12792,671],{"class":224},[70,12794,12795,12797,12799,12801,12803,12805,12807,12809,12811,12813,12815,12817],{"class":72,"line":674},[70,12796,677],{"class":196},[70,12798,680],{"class":196},[70,12800,240],{"class":200},[70,12802,685],{"class":275},[70,12804,635],{"class":76},[70,12806,279],{"class":200},[70,12808,692],{"class":275},[70,12810,635],{"class":76},[70,12812,279],{"class":200},[70,12814,699],{"class":275},[70,12816,635],{"class":76},[70,12818,427],{"class":200},[70,12820,12821],{"class":72,"line":706},[70,12822,184],{"emptyLinePlaceholder":183},[70,12824,12825],{"class":72,"line":711},[70,12826,714],{"class":224},[70,12828,12829],{"class":72,"line":717},[70,12830,720],{"class":200},[70,12832,12833],{"class":72,"line":723},[70,12834,184],{"emptyLinePlaceholder":183},[70,12836,12837],{"class":72,"line":728},[70,12838,731],{"class":224},[70,12840,12841,12843,12845,12847,12849,12851,12853],{"class":72,"line":734},[70,12842,549],{"class":76},[70,12844,739],{"class":196},[70,12846,240],{"class":200},[70,12848,557],{"class":196},[70,12850,746],{"class":76},[70,12852,749],{"class":249},[70,12854,752],{"class":200},[70,12856,12857],{"class":72,"line":755},[70,12858,758],{"class":224},[70,12860,12861,12863,12865],{"class":72,"line":761},[70,12862,764],{"class":200},[70,12864,767],{"class":196},[70,12866,770],{"class":200},[70,12868,12869],{"class":72,"line":773},[70,12870,184],{"emptyLinePlaceholder":183},[70,12872,12873,12875,12877,12879,12881,12883],{"class":72,"line":778},[70,12874,321],{"class":76},[70,12876,783],{"class":200},[70,12878,786],{"class":196},[70,12880,789],{"class":200},[70,12882,792],{"class":76},[70,12884,795],{"class":200},[70,12886,12887,12889,12891,12893,12895],{"class":72,"line":798},[70,12888,801],{"class":200},[70,12890,804],{"class":196},[70,12892,240],{"class":200},[70,12894,809],{"class":80},[70,12896,427],{"class":200},[70,12898,12899],{"class":72,"line":814},[70,12900,373],{"class":200},[70,12902,12903,12905,12907,12909,12911,12913],{"class":72,"line":819},[70,12904,321],{"class":76},[70,12906,783],{"class":200},[70,12908,786],{"class":196},[70,12910,828],{"class":200},[70,12912,792],{"class":76},[70,12914,795],{"class":200},[70,12916,12917,12919,12921,12923,12925],{"class":72,"line":835},[70,12918,801],{"class":200},[70,12920,804],{"class":196},[70,12922,240],{"class":200},[70,12924,844],{"class":80},[70,12926,427],{"class":200},[70,12928,12929],{"class":72,"line":849},[70,12930,373],{"class":200},[70,12932,12933,12935,12937,12939,12941,12943],{"class":72,"line":854},[70,12934,321],{"class":76},[70,12936,783],{"class":200},[70,12938,786],{"class":196},[70,12940,863],{"class":200},[70,12942,792],{"class":76},[70,12944,795],{"class":200},[70,12946,12947,12949,12951,12953,12955],{"class":72,"line":870},[70,12948,801],{"class":200},[70,12950,804],{"class":196},[70,12952,240],{"class":200},[70,12954,879],{"class":80},[70,12956,427],{"class":200},[70,12958,12959],{"class":72,"line":884},[70,12960,373],{"class":200},[70,12962,12963],{"class":72,"line":889},[70,12964,291],{"class":200},[70,12966,12967],{"class":72,"line":894},[70,12968,897],{"class":224},[70,12970,12971,12973,12975,12977,12979,12981],{"class":72,"line":900},[70,12972,321],{"class":76},[70,12974,783],{"class":200},[70,12976,786],{"class":196},[70,12978,909],{"class":200},[70,12980,792],{"class":76},[70,12982,795],{"class":200},[70,12984,12985,12987,12989,12991,12993,12995,12997,12999,13001],{"class":72,"line":916},[70,12986,336],{"class":196},[70,12988,339],{"class":200},[70,12990,342],{"class":76},[70,12992,925],{"class":200},[70,12994,928],{"class":196},[70,12996,931],{"class":200},[70,12998,342],{"class":76},[70,13000,356],{"class":196},[70,13002,359],{"class":200},[70,13004,13005],{"class":72,"line":940},[70,13006,373],{"class":200},[70,13008,13009],{"class":72,"line":945},[70,13010,532],{"class":200},[70,13012,13013],{"class":72,"line":950},[70,13014,184],{"emptyLinePlaceholder":183},[70,13016,13017,13019,13021],{"class":72,"line":955},[70,13018,568],{"class":76},[70,13020,960],{"class":196},[70,13022,963],{"class":200},[70,13024,13025],{"class":72,"line":966},[70,13026,969],{"class":224},[70,13028,13029,13031,13033,13035,13037,13039,13041,13043,13045,13047,13049,13051,13053,13055,13057,13059,13061,13063,13065,13067,13069,13071,13073,13075,13077],{"class":72,"line":972},[70,13030,975],{"class":196},[70,13032,978],{"class":200},[70,13034,309],{"class":76},[70,13036,983],{"class":196},[70,13038,240],{"class":200},[70,13040,988],{"class":196},[70,13042,240],{"class":200},[70,13044,993],{"class":275},[70,13046,635],{"class":76},[70,13048,998],{"class":200},[70,13050,624],{"class":76},[70,13052,1003],{"class":200},[70,13054,1006],{"class":275},[70,13056,1009],{"class":76},[70,13058,783],{"class":200},[70,13060,624],{"class":76},[70,13062,1003],{"class":200},[70,13064,1018],{"class":275},[70,13066,279],{"class":200},[70,13068,685],{"class":275},[70,13070,635],{"class":76},[70,13072,279],{"class":200},[70,13074,1029],{"class":275},[70,13076,635],{"class":76},[70,13078,427],{"class":200},[70,13080,13081],{"class":72,"line":1036},[70,13082,184],{"emptyLinePlaceholder":183},[70,13084,13085],{"class":72,"line":1041},[70,13086,1044],{"class":224},[70,13088,13089,13091],{"class":72,"line":1047},[70,13090,1050],{"class":196},[70,13092,1053],{"class":200},[70,13094,13095,13097,13099,13101],{"class":72,"line":1056},[70,13096,1059],{"class":196},[70,13098,1062],{"class":200},[70,13100,1065],{"class":275},[70,13102,427],{"class":200},[70,13104,13105,13107,13109,13111],{"class":72,"line":1070},[70,13106,1059],{"class":196},[70,13108,1075],{"class":200},[70,13110,1065],{"class":275},[70,13112,427],{"class":200},[70,13114,13115,13117],{"class":72,"line":1082},[70,13116,1059],{"class":196},[70,13118,1087],{"class":200},[70,13120,13121],{"class":72,"line":1090},[70,13122,291],{"class":200},[70,13124,13125],{"class":72,"line":1095},[70,13126,1098],{"class":224},[70,13128,13129,13131,13133,13135],{"class":72,"line":1101},[70,13130,1104],{"class":196},[70,13132,1107],{"class":200},[70,13134,1110],{"class":196},[70,13136,1053],{"class":200},[70,13138,13139],{"class":72,"line":1115},[70,13140,184],{"emptyLinePlaceholder":183},[70,13142,13143],{"class":72,"line":1120},[70,13144,1123],{"class":224},[70,13146,13147,13149,13151,13153,13155,13157,13159,13161,13163,13165,13167,13169,13171,13173,13175,13177],{"class":72,"line":1126},[70,13148,1129],{"class":196},[70,13150,560],{"class":76},[70,13152,1134],{"class":200},[70,13154,309],{"class":76},[70,13156,1139],{"class":196},[70,13158,240],{"class":200},[70,13160,1006],{"class":275},[70,13162,279],{"class":200},[70,13164,1018],{"class":275},[70,13166,279],{"class":200},[70,13168,1152],{"class":80},[70,13170,279],{"class":200},[70,13172,1157],{"class":275},[70,13174,279],{"class":200},[70,13176,1157],{"class":275},[70,13178,427],{"class":200},[70,13180,13181,13183,13185,13187,13189],{"class":72,"line":1166},[70,13182,321],{"class":76},[70,13184,1171],{"class":200},[70,13186,792],{"class":76},[70,13188,1176],{"class":275},[70,13190,253],{"class":200},[70,13192,13193,13195,13197,13199,13201,13203,13205],{"class":72,"line":1181},[70,13194,336],{"class":196},[70,13196,339],{"class":200},[70,13198,342],{"class":76},[70,13200,1190],{"class":80},[70,13202,348],{"class":76},[70,13204,356],{"class":196},[70,13206,359],{"class":200},[70,13208,13209,13211],{"class":72,"line":1199},[70,13210,1202],{"class":196},[70,13212,1053],{"class":200},[70,13214,13215,13217,13219,13221],{"class":72,"line":1207},[70,13216,365],{"class":76},[70,13218,1212],{"class":76},[70,13220,276],{"class":275},[70,13222,201],{"class":200},[70,13224,13225],{"class":72,"line":1219},[70,13226,373],{"class":200},[70,13228,13229],{"class":72,"line":1224},[70,13230,184],{"emptyLinePlaceholder":183},[70,13232,13233,13235],{"class":72,"line":1229},[70,13234,1232],{"class":196},[70,13236,770],{"class":200},[70,13238,13239,13241],{"class":72,"line":1237},[70,13240,1240],{"class":196},[70,13242,1243],{"class":200},[70,13244,13245],{"class":72,"line":1246},[70,13246,291],{"class":200},[70,13248,13249],{"class":72,"line":1251},[70,13250,1254],{"class":224},[70,13252,13253,13255,13257],{"class":72,"line":1257},[70,13254,764],{"class":200},[70,13256,1262],{"class":196},[70,13258,770],{"class":200},[70,13260,13261],{"class":72,"line":1267},[70,13262,184],{"emptyLinePlaceholder":183},[70,13264,13265],{"class":72,"line":1272},[70,13266,1275],{"class":224},[70,13268,13269,13271,13273,13275,13277],{"class":72,"line":1278},[70,13270,321],{"class":76},[70,13272,783],{"class":200},[70,13274,1285],{"class":76},[70,13276,1288],{"class":196},[70,13278,1291],{"class":200},[70,13280,13281,13283,13285,13287,13289,13291,13293],{"class":72,"line":1294},[70,13282,336],{"class":196},[70,13284,339],{"class":200},[70,13286,342],{"class":76},[70,13288,1303],{"class":80},[70,13290,348],{"class":76},[70,13292,356],{"class":196},[70,13294,359],{"class":200},[70,13296,13297,13299,13301,13303],{"class":72,"line":1312},[70,13298,365],{"class":76},[70,13300,1212],{"class":76},[70,13302,276],{"class":275},[70,13304,201],{"class":200},[70,13306,13307],{"class":72,"line":1323},[70,13308,373],{"class":200},[70,13310,13311],{"class":72,"line":1328},[70,13312,184],{"emptyLinePlaceholder":183},[70,13314,13315],{"class":72,"line":1333},[70,13316,1336],{"class":224},[70,13318,13319,13321,13323],{"class":72,"line":1339},[70,13320,1342],{"class":200},[70,13322,1262],{"class":196},[70,13324,770],{"class":200},[70,13326,13327],{"class":72,"line":1349},[70,13328,291],{"class":200},[70,13330,13331],{"class":72,"line":1354},[70,13332,1357],{"class":224},[70,13334,13335,13337,13339,13341,13343],{"class":72,"line":1360},[70,13336,1342],{"class":200},[70,13338,1365],{"class":196},[70,13340,240],{"class":200},[70,13342,1370],{"class":80},[70,13344,1373],{"class":200},[70,13346,13347,13349,13351,13353,13355,13357,13359,13361,13363,13365,13367,13369,13371,13373,13375],{"class":72,"line":1376},[70,13348,1379],{"class":196},[70,13350,1107],{"class":200},[70,13352,1384],{"class":196},[70,13354,240],{"class":200},[70,13356,1389],{"class":80},[70,13358,1392],{"class":275},[70,13360,1395],{"class":80},[70,13362,1398],{"class":200},[70,13364,1401],{"class":196},[70,13366,931],{"class":200},[70,13368,1406],{"class":76},[70,13370,1409],{"class":80},[70,13372,1412],{"class":76},[70,13374,1415],{"class":80},[70,13376,427],{"class":200},[70,13378,13379,13381,13383,13385,13387,13389,13391,13393,13395,13397],{"class":72,"line":1420},[70,13380,1379],{"class":196},[70,13382,1107],{"class":200},[70,13384,1384],{"class":196},[70,13386,240],{"class":200},[70,13388,1431],{"class":80},[70,13390,1434],{"class":275},[70,13392,1395],{"class":80},[70,13394,1398],{"class":200},[70,13396,1441],{"class":196},[70,13398,1444],{"class":200},[70,13400,13401],{"class":72,"line":1447},[70,13402,1450],{"class":200},[70,13404,13405,13407,13409,13411,13413,13415,13417,13419],{"class":72,"line":1453},[70,13406,1456],{"class":76},[70,13408,783],{"class":200},[70,13410,1461],{"class":196},[70,13412,1107],{"class":200},[70,13414,1466],{"class":196},[70,13416,240],{"class":200},[70,13418,1471],{"class":80},[70,13420,1474],{"class":200},[70,13422,13423,13425,13427],{"class":72,"line":1477},[70,13424,1480],{"class":200},[70,13426,1483],{"class":196},[70,13428,1053],{"class":200},[70,13430,13431],{"class":72,"line":1488},[70,13432,1491],{"class":200},[70,13434,13435],{"class":72,"line":1494},[70,13436,1450],{"class":200},[70,13438,13439,13441,13443,13445,13447,13449],{"class":72,"line":1499},[70,13440,1502],{"class":76},[70,13442,1505],{"class":200},[70,13444,309],{"class":76},[70,13446,925],{"class":200},[70,13448,1441],{"class":196},[70,13450,1053],{"class":200},[70,13452,13453,13455,13457,13459,13461,13463,13465,13467,13469,13471,13473,13475,13477,13479,13481,13483],{"class":72,"line":1516},[70,13454,1456],{"class":76},[70,13456,783],{"class":200},[70,13458,1461],{"class":196},[70,13460,1107],{"class":200},[70,13462,1527],{"class":196},[70,13464,240],{"class":200},[70,13466,1532],{"class":80},[70,13468,279],{"class":200},[70,13470,282],{"class":76},[70,13472,1539],{"class":200},[70,13474,1542],{"class":275},[70,13476,635],{"class":76},[70,13478,279],{"class":200},[70,13480,1549],{"class":275},[70,13482,635],{"class":76},[70,13484,1474],{"class":200},[70,13486,13487,13489,13491],{"class":72,"line":1556},[70,13488,1480],{"class":200},[70,13490,1561],{"class":196},[70,13492,1564],{"class":200},[70,13494,13495],{"class":72,"line":1567},[70,13496,1491],{"class":200},[70,13498,13499],{"class":72,"line":1572},[70,13500,1575],{"class":200},[70,13502,13503],{"class":72,"line":1578},[70,13504,291],{"class":200},[70,13506,13507,13509,13511,13513,13515],{"class":72,"line":1583},[70,13508,1342],{"class":200},[70,13510,1365],{"class":196},[70,13512,240],{"class":200},[70,13514,809],{"class":80},[70,13516,1373],{"class":200},[70,13518,13519,13521,13523,13525,13527,13529,13531,13533],{"class":72,"line":1596},[70,13520,1599],{"class":196},[70,13522,282],{"class":76},[70,13524,1604],{"class":200},[70,13526,309],{"class":76},[70,13528,1609],{"class":196},[70,13530,1107],{"class":200},[70,13532,1614],{"class":196},[70,13534,1053],{"class":200},[70,13536,13537,13539,13541,13543,13545,13547,13549,13551],{"class":72,"line":1619},[70,13538,1379],{"class":196},[70,13540,1107],{"class":200},[70,13542,1384],{"class":196},[70,13544,240],{"class":200},[70,13546,1630],{"class":80},[70,13548,1633],{"class":275},[70,13550,1395],{"class":80},[70,13552,1638],{"class":200},[70,13554,13555,13557,13559,13561,13563,13565,13567,13569,13571,13573,13575,13577],{"class":72,"line":1641},[70,13556,1379],{"class":196},[70,13558,1107],{"class":200},[70,13560,1384],{"class":196},[70,13562,240],{"class":200},[70,13564,1652],{"class":80},[70,13566,1434],{"class":275},[70,13568,1657],{"class":80},[70,13570,279],{"class":200},[70,13572,1662],{"class":275},[70,13574,635],{"class":76},[70,13576,1009],{"class":76},[70,13578,1669],{"class":200},[70,13580,13581],{"class":72,"line":1672},[70,13582,1575],{"class":200},[70,13584,13585],{"class":72,"line":1677},[70,13586,291],{"class":200},[70,13588,13589],{"class":72,"line":1682},[70,13590,184],{"emptyLinePlaceholder":183},[70,13592,13593],{"class":72,"line":1687},[70,13594,1690],{"class":224},[70,13596,13597,13599],{"class":72,"line":1693},[70,13598,1696],{"class":196},[70,13600,1699],{"class":200},[70,13602,13603],{"class":72,"line":1702},[70,13604,184],{"emptyLinePlaceholder":183},[70,13606,13607,13609,13611,13613],{"class":72,"line":1707},[70,13608,1710],{"class":76},[70,13610,1713],{"class":200},[70,13612,309],{"class":76},[70,13614,1718],{"class":200},[70,13616,13617],{"class":72,"line":1721},[70,13618,1724],{"class":224},[70,13620,13621],{"class":72,"line":1727},[70,13622,1730],{"class":224},[70,13624,13625],{"class":72,"line":1733},[70,13626,1736],{"class":224},[70,13628,13629,13631,13633,13635,13637,13639,13641,13643,13645,13647,13649,13651,13653,13655,13657,13659,13661,13663,13665,13667,13669,13671,13673,13675,13677,13679],{"class":72,"line":1739},[70,13630,1742],{"class":76},[70,13632,1549],{"class":275},[70,13634,635],{"class":76},[70,13636,279],{"class":200},[70,13638,1751],{"class":76},[70,13640,1549],{"class":275},[70,13642,635],{"class":76},[70,13644,1758],{"class":200},[70,13646,1549],{"class":275},[70,13648,635],{"class":76},[70,13650,1758],{"class":200},[70,13652,1767],{"class":275},[70,13654,635],{"class":76},[70,13656,1758],{"class":200},[70,13658,1767],{"class":275},[70,13660,635],{"class":76},[70,13662,1758],{"class":200},[70,13664,1780],{"class":275},[70,13666,635],{"class":76},[70,13668,1758],{"class":200},[70,13670,1767],{"class":275},[70,13672,635],{"class":76},[70,13674,279],{"class":200},[70,13676,1767],{"class":275},[70,13678,635],{"class":76},[70,13680,1797],{"class":200},[70,13682,13683,13685,13687,13689,13691,13693,13695,13697,13699,13701,13703,13705,13707,13709,13711,13713,13715,13717,13719,13721,13723,13725,13727,13729,13731],{"class":72,"line":1800},[70,13684,1803],{"class":275},[70,13686,635],{"class":76},[70,13688,279],{"class":200},[70,13690,1751],{"class":76},[70,13692,1549],{"class":275},[70,13694,635],{"class":76},[70,13696,1758],{"class":200},[70,13698,1549],{"class":275},[70,13700,635],{"class":76},[70,13702,1758],{"class":200},[70,13704,1767],{"class":275},[70,13706,635],{"class":76},[70,13708,1758],{"class":200},[70,13710,1767],{"class":275},[70,13712,635],{"class":76},[70,13714,1758],{"class":200},[70,13716,1780],{"class":275},[70,13718,635],{"class":76},[70,13720,1758],{"class":200},[70,13722,1780],{"class":275},[70,13724,635],{"class":76},[70,13726,279],{"class":200},[70,13728,1767],{"class":275},[70,13730,635],{"class":76},[70,13732,1797],{"class":200},[70,13734,13735,13737,13739,13741,13743,13745,13747,13749,13751,13753,13755,13757,13759,13761,13763,13765,13767,13769,13771,13773,13775,13777,13779,13781],{"class":72,"line":1854},[70,13736,1803],{"class":275},[70,13738,635],{"class":76},[70,13740,1758],{"class":200},[70,13742,1549],{"class":275},[70,13744,635],{"class":76},[70,13746,1758],{"class":200},[70,13748,1549],{"class":275},[70,13750,635],{"class":76},[70,13752,1758],{"class":200},[70,13754,1767],{"class":275},[70,13756,635],{"class":76},[70,13758,1758],{"class":200},[70,13760,1767],{"class":275},[70,13762,635],{"class":76},[70,13764,1758],{"class":200},[70,13766,1780],{"class":275},[70,13768,635],{"class":76},[70,13770,1758],{"class":200},[70,13772,1780],{"class":275},[70,13774,635],{"class":76},[70,13776,279],{"class":200},[70,13778,1780],{"class":275},[70,13780,635],{"class":76},[70,13782,1797],{"class":200},[70,13784,13785,13787,13789,13791,13793,13795,13797,13799,13801,13803,13805,13807,13809,13811,13813,13815,13817,13819,13821,13823,13825,13827,13829,13831],{"class":72,"line":1905},[70,13786,1803],{"class":275},[70,13788,635],{"class":76},[70,13790,1758],{"class":200},[70,13792,1549],{"class":275},[70,13794,635],{"class":76},[70,13796,1758],{"class":200},[70,13798,1549],{"class":275},[70,13800,635],{"class":76},[70,13802,1758],{"class":200},[70,13804,1767],{"class":275},[70,13806,635],{"class":76},[70,13808,1758],{"class":200},[70,13810,1767],{"class":275},[70,13812,635],{"class":76},[70,13814,1758],{"class":200},[70,13816,1780],{"class":275},[70,13818,635],{"class":76},[70,13820,1758],{"class":200},[70,13822,1780],{"class":275},[70,13824,635],{"class":76},[70,13826,279],{"class":200},[70,13828,1780],{"class":275},[70,13830,635],{"class":76},[70,13832,1797],{"class":200},[70,13834,13835,13837,13839,13841,13843,13845,13847,13849,13851,13853,13855,13857,13859,13861,13863,13865,13867,13869,13871,13873,13875,13877,13879,13881,13883],{"class":72,"line":1956},[70,13836,1742],{"class":76},[70,13838,1549],{"class":275},[70,13840,635],{"class":76},[70,13842,1758],{"class":200},[70,13844,1549],{"class":275},[70,13846,635],{"class":76},[70,13848,1758],{"class":200},[70,13850,1549],{"class":275},[70,13852,635],{"class":76},[70,13854,1758],{"class":200},[70,13856,1767],{"class":275},[70,13858,635],{"class":76},[70,13860,1758],{"class":200},[70,13862,1767],{"class":275},[70,13864,635],{"class":76},[70,13866,1758],{"class":200},[70,13868,1780],{"class":275},[70,13870,635],{"class":76},[70,13872,1758],{"class":200},[70,13874,1767],{"class":275},[70,13876,635],{"class":76},[70,13878,279],{"class":200},[70,13880,1780],{"class":275},[70,13882,635],{"class":76},[70,13884,1797],{"class":200},[70,13886,13887,13889,13891,13893,13895,13897,13899,13901,13903,13905,13907,13909,13911,13913,13915,13917,13919,13921,13923,13925,13927,13929,13931,13933,13935,13937],{"class":72,"line":2009},[70,13888,1742],{"class":76},[70,13890,1549],{"class":275},[70,13892,635],{"class":76},[70,13894,279],{"class":200},[70,13896,1751],{"class":76},[70,13898,1549],{"class":275},[70,13900,635],{"class":76},[70,13902,1758],{"class":200},[70,13904,1549],{"class":275},[70,13906,635],{"class":76},[70,13908,1758],{"class":200},[70,13910,1767],{"class":275},[70,13912,635],{"class":76},[70,13914,1758],{"class":200},[70,13916,1767],{"class":275},[70,13918,635],{"class":76},[70,13920,1758],{"class":200},[70,13922,1780],{"class":275},[70,13924,635],{"class":76},[70,13926,1758],{"class":200},[70,13928,1767],{"class":275},[70,13930,635],{"class":76},[70,13932,279],{"class":200},[70,13934,1767],{"class":275},[70,13936,635],{"class":76},[70,13938,1797],{"class":200},[70,13940,13941],{"class":72,"line":2064},[70,13942,291],{"class":200},[70,13944,13945],{"class":72,"line":2069},[70,13946,2072],{"class":224},[70,13948,13949,13951,13953,13955,13957,13959,13961,13963,13965,13967,13969,13971,13973,13975,13977,13979,13981,13983,13985,13987,13989,13991,13993,13995,13997,13999,14001,14003],{"class":72,"line":2075},[70,13950,1742],{"class":76},[70,13952,1549],{"class":275},[70,13954,635],{"class":76},[70,13956,279],{"class":200},[70,13958,1751],{"class":76},[70,13960,1549],{"class":275},[70,13962,635],{"class":76},[70,13964,279],{"class":200},[70,13966,1751],{"class":76},[70,13968,1549],{"class":275},[70,13970,635],{"class":76},[70,13972,1758],{"class":200},[70,13974,1767],{"class":275},[70,13976,635],{"class":76},[70,13978,1758],{"class":200},[70,13980,1767],{"class":275},[70,13982,635],{"class":76},[70,13984,279],{"class":200},[70,13986,1751],{"class":76},[70,13988,1780],{"class":275},[70,13990,635],{"class":76},[70,13992,1758],{"class":200},[70,13994,1767],{"class":275},[70,13996,635],{"class":76},[70,13998,279],{"class":200},[70,14000,1767],{"class":275},[70,14002,635],{"class":76},[70,14004,1797],{"class":200},[70,14006,14007,14009,14011,14013,14015,14017,14019,14021,14023,14025,14027,14029,14031,14033,14035,14037,14039,14041,14043,14045,14047,14049,14051,14053,14055,14057,14059],{"class":72,"line":2134},[70,14008,1803],{"class":275},[70,14010,635],{"class":76},[70,14012,279],{"class":200},[70,14014,1751],{"class":76},[70,14016,1549],{"class":275},[70,14018,635],{"class":76},[70,14020,279],{"class":200},[70,14022,1751],{"class":76},[70,14024,1549],{"class":275},[70,14026,635],{"class":76},[70,14028,1758],{"class":200},[70,14030,1767],{"class":275},[70,14032,635],{"class":76},[70,14034,1758],{"class":200},[70,14036,1767],{"class":275},[70,14038,635],{"class":76},[70,14040,279],{"class":200},[70,14042,1751],{"class":76},[70,14044,1780],{"class":275},[70,14046,635],{"class":76},[70,14048,1758],{"class":200},[70,14050,1780],{"class":275},[70,14052,635],{"class":76},[70,14054,279],{"class":200},[70,14056,1767],{"class":275},[70,14058,635],{"class":76},[70,14060,1797],{"class":200},[70,14062,14063,14065,14067,14069,14071,14073,14075,14077,14079,14081,14083,14085,14087,14089,14091,14093,14095,14097,14099,14101,14103,14105,14107,14109,14111,14113],{"class":72,"line":2191},[70,14064,1803],{"class":275},[70,14066,635],{"class":76},[70,14068,1758],{"class":200},[70,14070,1549],{"class":275},[70,14072,635],{"class":76},[70,14074,279],{"class":200},[70,14076,1751],{"class":76},[70,14078,1549],{"class":275},[70,14080,635],{"class":76},[70,14082,1758],{"class":200},[70,14084,1767],{"class":275},[70,14086,635],{"class":76},[70,14088,1758],{"class":200},[70,14090,1767],{"class":275},[70,14092,635],{"class":76},[70,14094,279],{"class":200},[70,14096,1751],{"class":76},[70,14098,1780],{"class":275},[70,14100,635],{"class":76},[70,14102,1758],{"class":200},[70,14104,1780],{"class":275},[70,14106,635],{"class":76},[70,14108,279],{"class":200},[70,14110,1780],{"class":275},[70,14112,635],{"class":76},[70,14114,1797],{"class":200},[70,14116,14117,14119,14121,14123,14125,14127,14129,14131,14133,14135,14137,14139,14141,14143,14145,14147,14149,14151,14153,14155,14157,14159,14161,14163,14165,14167],{"class":72,"line":2246},[70,14118,1803],{"class":275},[70,14120,635],{"class":76},[70,14122,1758],{"class":200},[70,14124,1549],{"class":275},[70,14126,635],{"class":76},[70,14128,279],{"class":200},[70,14130,1751],{"class":76},[70,14132,1549],{"class":275},[70,14134,635],{"class":76},[70,14136,1758],{"class":200},[70,14138,1767],{"class":275},[70,14140,635],{"class":76},[70,14142,1758],{"class":200},[70,14144,1767],{"class":275},[70,14146,635],{"class":76},[70,14148,279],{"class":200},[70,14150,1751],{"class":76},[70,14152,1780],{"class":275},[70,14154,635],{"class":76},[70,14156,1758],{"class":200},[70,14158,1780],{"class":275},[70,14160,635],{"class":76},[70,14162,279],{"class":200},[70,14164,1780],{"class":275},[70,14166,635],{"class":76},[70,14168,1797],{"class":200},[70,14170,14171,14173,14175,14177,14179,14181,14183,14185,14187,14189,14191,14193,14195,14197,14199,14201,14203,14205,14207,14209,14211,14213,14215,14217,14219,14221,14223],{"class":72,"line":2301},[70,14172,1742],{"class":76},[70,14174,1549],{"class":275},[70,14176,635],{"class":76},[70,14178,1758],{"class":200},[70,14180,1549],{"class":275},[70,14182,635],{"class":76},[70,14184,279],{"class":200},[70,14186,1751],{"class":76},[70,14188,1549],{"class":275},[70,14190,635],{"class":76},[70,14192,1758],{"class":200},[70,14194,1767],{"class":275},[70,14196,635],{"class":76},[70,14198,1758],{"class":200},[70,14200,1767],{"class":275},[70,14202,635],{"class":76},[70,14204,279],{"class":200},[70,14206,1751],{"class":76},[70,14208,1780],{"class":275},[70,14210,635],{"class":76},[70,14212,1758],{"class":200},[70,14214,1767],{"class":275},[70,14216,635],{"class":76},[70,14218,279],{"class":200},[70,14220,1780],{"class":275},[70,14222,635],{"class":76},[70,14224,1797],{"class":200},[70,14226,14227,14229,14231,14233,14235,14237,14239,14241,14243,14245,14247,14249,14251,14253,14255,14257,14259,14261,14263,14265,14267,14269,14271,14273,14275,14277,14279,14281],{"class":72,"line":2358},[70,14228,1742],{"class":76},[70,14230,1549],{"class":275},[70,14232,635],{"class":76},[70,14234,279],{"class":200},[70,14236,1751],{"class":76},[70,14238,1549],{"class":275},[70,14240,635],{"class":76},[70,14242,279],{"class":200},[70,14244,1751],{"class":76},[70,14246,1549],{"class":275},[70,14248,635],{"class":76},[70,14250,1758],{"class":200},[70,14252,1767],{"class":275},[70,14254,635],{"class":76},[70,14256,1758],{"class":200},[70,14258,1767],{"class":275},[70,14260,635],{"class":76},[70,14262,279],{"class":200},[70,14264,1751],{"class":76},[70,14266,1780],{"class":275},[70,14268,635],{"class":76},[70,14270,1758],{"class":200},[70,14272,1767],{"class":275},[70,14274,635],{"class":76},[70,14276,279],{"class":200},[70,14278,1767],{"class":275},[70,14280,635],{"class":76},[70,14282,1797],{"class":200},[70,14284,14285],{"class":72,"line":2417},[70,14286,291],{"class":200},[70,14288,14289],{"class":72,"line":2422},[70,14290,2425],{"class":224},[70,14292,14293,14295,14297,14299,14301,14303,14305,14307,14309,14311,14313,14315,14317,14319,14321,14323,14325,14327,14329,14331,14333,14335,14337,14339,14341,14343],{"class":72,"line":2428},[70,14294,1742],{"class":76},[70,14296,1549],{"class":275},[70,14298,635],{"class":76},[70,14300,1758],{"class":200},[70,14302,1549],{"class":275},[70,14304,635],{"class":76},[70,14306,1758],{"class":200},[70,14308,1549],{"class":275},[70,14310,635],{"class":76},[70,14312,279],{"class":200},[70,14314,1751],{"class":76},[70,14316,1780],{"class":275},[70,14318,635],{"class":76},[70,14320,1758],{"class":200},[70,14322,1767],{"class":275},[70,14324,635],{"class":76},[70,14326,1758],{"class":200},[70,14328,1767],{"class":275},[70,14330,635],{"class":76},[70,14332,1758],{"class":200},[70,14334,1780],{"class":275},[70,14336,635],{"class":76},[70,14338,279],{"class":200},[70,14340,1767],{"class":275},[70,14342,635],{"class":76},[70,14344,1797],{"class":200},[70,14346,14347,14349,14351,14353,14355,14357,14359,14361,14363,14365,14367,14369,14371,14373,14375,14377,14379,14381,14383,14385,14387,14389,14391,14393,14395,14397,14399],{"class":72,"line":2483},[70,14348,1742],{"class":76},[70,14350,1549],{"class":275},[70,14352,635],{"class":76},[70,14354,1758],{"class":200},[70,14356,1549],{"class":275},[70,14358,635],{"class":76},[70,14360,279],{"class":200},[70,14362,1751],{"class":76},[70,14364,1549],{"class":275},[70,14366,635],{"class":76},[70,14368,279],{"class":200},[70,14370,1751],{"class":76},[70,14372,1780],{"class":275},[70,14374,635],{"class":76},[70,14376,1758],{"class":200},[70,14378,1767],{"class":275},[70,14380,635],{"class":76},[70,14382,1758],{"class":200},[70,14384,1767],{"class":275},[70,14386,635],{"class":76},[70,14388,1758],{"class":200},[70,14390,1780],{"class":275},[70,14392,635],{"class":76},[70,14394,279],{"class":200},[70,14396,1780],{"class":275},[70,14398,635],{"class":76},[70,14400,1797],{"class":200},[70,14402,14403,14405,14407,14409,14411,14413,14415,14417,14419,14421,14423,14425,14427,14429,14431,14433,14435,14437,14439,14441,14443,14445,14447,14449,14451,14453,14455,14457],{"class":72,"line":2540},[70,14404,1742],{"class":76},[70,14406,1549],{"class":275},[70,14408,635],{"class":76},[70,14410,279],{"class":200},[70,14412,1751],{"class":76},[70,14414,1549],{"class":275},[70,14416,635],{"class":76},[70,14418,279],{"class":200},[70,14420,1751],{"class":76},[70,14422,1549],{"class":275},[70,14424,635],{"class":76},[70,14426,279],{"class":200},[70,14428,1751],{"class":76},[70,14430,1780],{"class":275},[70,14432,635],{"class":76},[70,14434,1758],{"class":200},[70,14436,1767],{"class":275},[70,14438,635],{"class":76},[70,14440,1758],{"class":200},[70,14442,1767],{"class":275},[70,14444,635],{"class":76},[70,14446,1758],{"class":200},[70,14448,1767],{"class":275},[70,14450,635],{"class":76},[70,14452,279],{"class":200},[70,14454,1780],{"class":275},[70,14456,635],{"class":76},[70,14458,1797],{"class":200},[70,14460,14461,14463,14465,14467,14469,14471,14473,14475,14477,14479,14481,14483,14485,14487,14489,14491,14493,14495,14497,14499,14501,14503,14505,14507,14509,14511,14513,14515],{"class":72,"line":2599},[70,14462,1742],{"class":76},[70,14464,1549],{"class":275},[70,14466,635],{"class":76},[70,14468,279],{"class":200},[70,14470,1751],{"class":76},[70,14472,1549],{"class":275},[70,14474,635],{"class":76},[70,14476,279],{"class":200},[70,14478,1751],{"class":76},[70,14480,1549],{"class":275},[70,14482,635],{"class":76},[70,14484,279],{"class":200},[70,14486,1751],{"class":76},[70,14488,1780],{"class":275},[70,14490,635],{"class":76},[70,14492,1758],{"class":200},[70,14494,1767],{"class":275},[70,14496,635],{"class":76},[70,14498,1758],{"class":200},[70,14500,1767],{"class":275},[70,14502,635],{"class":76},[70,14504,1758],{"class":200},[70,14506,1767],{"class":275},[70,14508,635],{"class":76},[70,14510,279],{"class":200},[70,14512,1780],{"class":275},[70,14514,635],{"class":76},[70,14516,1797],{"class":200},[70,14518,14519,14521,14523,14525,14527,14529,14531,14533,14535,14537,14539,14541,14543,14545,14547,14549,14551,14553,14555,14557,14559,14561,14563,14565,14567,14569,14571],{"class":72,"line":2658},[70,14520,1742],{"class":76},[70,14522,1549],{"class":275},[70,14524,635],{"class":76},[70,14526,279],{"class":200},[70,14528,1751],{"class":76},[70,14530,1549],{"class":275},[70,14532,635],{"class":76},[70,14534,1758],{"class":200},[70,14536,1549],{"class":275},[70,14538,635],{"class":76},[70,14540,279],{"class":200},[70,14542,1751],{"class":76},[70,14544,1780],{"class":275},[70,14546,635],{"class":76},[70,14548,1758],{"class":200},[70,14550,1767],{"class":275},[70,14552,635],{"class":76},[70,14554,1758],{"class":200},[70,14556,1767],{"class":275},[70,14558,635],{"class":76},[70,14560,1758],{"class":200},[70,14562,1767],{"class":275},[70,14564,635],{"class":76},[70,14566,279],{"class":200},[70,14568,1767],{"class":275},[70,14570,635],{"class":76},[70,14572,1797],{"class":200},[70,14574,14575,14577,14579,14581,14583,14585,14587,14589,14591,14593,14595,14597,14599,14601,14603,14605,14607,14609,14611,14613,14615,14617,14619,14621,14623,14625],{"class":72,"line":2715},[70,14576,1742],{"class":76},[70,14578,1549],{"class":275},[70,14580,635],{"class":76},[70,14582,1758],{"class":200},[70,14584,1549],{"class":275},[70,14586,635],{"class":76},[70,14588,1758],{"class":200},[70,14590,1549],{"class":275},[70,14592,635],{"class":76},[70,14594,279],{"class":200},[70,14596,1751],{"class":76},[70,14598,1780],{"class":275},[70,14600,635],{"class":76},[70,14602,1758],{"class":200},[70,14604,1767],{"class":275},[70,14606,635],{"class":76},[70,14608,1758],{"class":200},[70,14610,1767],{"class":275},[70,14612,635],{"class":76},[70,14614,1758],{"class":200},[70,14616,1780],{"class":275},[70,14618,635],{"class":76},[70,14620,279],{"class":200},[70,14622,1767],{"class":275},[70,14624,635],{"class":76},[70,14626,1797],{"class":200},[70,14628,14629],{"class":72,"line":2770},[70,14630,291],{"class":200},[70,14632,14633],{"class":72,"line":2775},[70,14634,2778],{"class":224},[70,14636,14637,14639,14641,14643,14645,14647,14649,14651,14653,14655,14657,14659,14661,14663,14665,14667,14669,14671,14673,14675,14677,14679,14681,14683],{"class":72,"line":2781},[70,14638,1803],{"class":275},[70,14640,635],{"class":76},[70,14642,1758],{"class":200},[70,14644,1549],{"class":275},[70,14646,635],{"class":76},[70,14648,1758],{"class":200},[70,14650,1549],{"class":275},[70,14652,635],{"class":76},[70,14654,1758],{"class":200},[70,14656,1780],{"class":275},[70,14658,635],{"class":76},[70,14660,1758],{"class":200},[70,14662,1767],{"class":275},[70,14664,635],{"class":76},[70,14666,1758],{"class":200},[70,14668,1767],{"class":275},[70,14670,635],{"class":76},[70,14672,1758],{"class":200},[70,14674,1780],{"class":275},[70,14676,635],{"class":76},[70,14678,279],{"class":200},[70,14680,1767],{"class":275},[70,14682,635],{"class":76},[70,14684,1797],{"class":200},[70,14686,14687,14689,14691,14693,14695,14697,14699,14701,14703,14705,14707,14709,14711,14713,14715,14717,14719,14721,14723,14725,14727,14729,14731,14733,14735],{"class":72,"line":2832},[70,14688,1803],{"class":275},[70,14690,635],{"class":76},[70,14692,1758],{"class":200},[70,14694,1549],{"class":275},[70,14696,635],{"class":76},[70,14698,279],{"class":200},[70,14700,1751],{"class":76},[70,14702,1549],{"class":275},[70,14704,635],{"class":76},[70,14706,1758],{"class":200},[70,14708,1780],{"class":275},[70,14710,635],{"class":76},[70,14712,1758],{"class":200},[70,14714,1767],{"class":275},[70,14716,635],{"class":76},[70,14718,1758],{"class":200},[70,14720,1767],{"class":275},[70,14722,635],{"class":76},[70,14724,1758],{"class":200},[70,14726,1780],{"class":275},[70,14728,635],{"class":76},[70,14730,279],{"class":200},[70,14732,1780],{"class":275},[70,14734,635],{"class":76},[70,14736,1797],{"class":200},[70,14738,14739,14741,14743,14745,14747,14749,14751,14753,14755,14757,14759,14761,14763,14765,14767,14769,14771,14773,14775,14777,14779,14781,14783,14785,14787,14789],{"class":72,"line":2885},[70,14740,1803],{"class":275},[70,14742,635],{"class":76},[70,14744,279],{"class":200},[70,14746,1751],{"class":76},[70,14748,1549],{"class":275},[70,14750,635],{"class":76},[70,14752,279],{"class":200},[70,14754,1751],{"class":76},[70,14756,1549],{"class":275},[70,14758,635],{"class":76},[70,14760,1758],{"class":200},[70,14762,1780],{"class":275},[70,14764,635],{"class":76},[70,14766,1758],{"class":200},[70,14768,1767],{"class":275},[70,14770,635],{"class":76},[70,14772,1758],{"class":200},[70,14774,1767],{"class":275},[70,14776,635],{"class":76},[70,14778,1758],{"class":200},[70,14780,1767],{"class":275},[70,14782,635],{"class":76},[70,14784,279],{"class":200},[70,14786,1780],{"class":275},[70,14788,635],{"class":76},[70,14790,1797],{"class":200},[70,14792,14793,14795,14797,14799,14801,14803,14805,14807,14809,14811,14813,14815,14817,14819,14821,14823,14825,14827,14829,14831,14833,14835,14837,14839,14841,14843],{"class":72,"line":2940},[70,14794,1803],{"class":275},[70,14796,635],{"class":76},[70,14798,279],{"class":200},[70,14800,1751],{"class":76},[70,14802,1549],{"class":275},[70,14804,635],{"class":76},[70,14806,279],{"class":200},[70,14808,1751],{"class":76},[70,14810,1549],{"class":275},[70,14812,635],{"class":76},[70,14814,1758],{"class":200},[70,14816,1780],{"class":275},[70,14818,635],{"class":76},[70,14820,1758],{"class":200},[70,14822,1767],{"class":275},[70,14824,635],{"class":76},[70,14826,1758],{"class":200},[70,14828,1767],{"class":275},[70,14830,635],{"class":76},[70,14832,1758],{"class":200},[70,14834,1767],{"class":275},[70,14836,635],{"class":76},[70,14838,279],{"class":200},[70,14840,1780],{"class":275},[70,14842,635],{"class":76},[70,14844,1797],{"class":200},[70,14846,14847,14849,14851,14853,14855,14857,14859,14861,14863,14865,14867,14869,14871,14873,14875,14877,14879,14881,14883,14885,14887,14889,14891,14893,14895],{"class":72,"line":2995},[70,14848,1803],{"class":275},[70,14850,635],{"class":76},[70,14852,279],{"class":200},[70,14854,1751],{"class":76},[70,14856,1549],{"class":275},[70,14858,635],{"class":76},[70,14860,1758],{"class":200},[70,14862,1549],{"class":275},[70,14864,635],{"class":76},[70,14866,1758],{"class":200},[70,14868,1780],{"class":275},[70,14870,635],{"class":76},[70,14872,1758],{"class":200},[70,14874,1767],{"class":275},[70,14876,635],{"class":76},[70,14878,1758],{"class":200},[70,14880,1767],{"class":275},[70,14882,635],{"class":76},[70,14884,1758],{"class":200},[70,14886,1767],{"class":275},[70,14888,635],{"class":76},[70,14890,279],{"class":200},[70,14892,1767],{"class":275},[70,14894,635],{"class":76},[70,14896,1797],{"class":200},[70,14898,14899,14901,14903,14905,14907,14909,14911,14913,14915,14917,14919,14921,14923,14925,14927,14929,14931,14933,14935,14937,14939,14941,14943,14945],{"class":72,"line":3048},[70,14900,1803],{"class":275},[70,14902,635],{"class":76},[70,14904,1758],{"class":200},[70,14906,1549],{"class":275},[70,14908,635],{"class":76},[70,14910,1758],{"class":200},[70,14912,1549],{"class":275},[70,14914,635],{"class":76},[70,14916,1758],{"class":200},[70,14918,1780],{"class":275},[70,14920,635],{"class":76},[70,14922,1758],{"class":200},[70,14924,1767],{"class":275},[70,14926,635],{"class":76},[70,14928,1758],{"class":200},[70,14930,1767],{"class":275},[70,14932,635],{"class":76},[70,14934,1758],{"class":200},[70,14936,1780],{"class":275},[70,14938,635],{"class":76},[70,14940,279],{"class":200},[70,14942,1767],{"class":275},[70,14944,635],{"class":76},[70,14946,1797],{"class":200},[70,14948,14949],{"class":72,"line":3099},[70,14950,291],{"class":200},[70,14952,14953],{"class":72,"line":3104},[70,14954,3107],{"class":224},[70,14956,14957,14959,14961,14963,14965,14967,14969,14971,14973,14975,14977,14979,14981,14983,14985,14987,14989,14991,14993,14995,14997,14999,15001,15003,15005,15007,15009,15011],{"class":72,"line":3110},[70,14958,1742],{"class":76},[70,14960,1549],{"class":275},[70,14962,635],{"class":76},[70,14964,279],{"class":200},[70,14966,1751],{"class":76},[70,14968,1549],{"class":275},[70,14970,635],{"class":76},[70,14972,279],{"class":200},[70,14974,1751],{"class":76},[70,14976,1549],{"class":275},[70,14978,635],{"class":76},[70,14980,1758],{"class":200},[70,14982,1767],{"class":275},[70,14984,635],{"class":76},[70,14986,279],{"class":200},[70,14988,1751],{"class":76},[70,14990,1780],{"class":275},[70,14992,635],{"class":76},[70,14994,1758],{"class":200},[70,14996,1767],{"class":275},[70,14998,635],{"class":76},[70,15000,1758],{"class":200},[70,15002,1767],{"class":275},[70,15004,635],{"class":76},[70,15006,279],{"class":200},[70,15008,1780],{"class":275},[70,15010,635],{"class":76},[70,15012,1797],{"class":200},[70,15014,15015,15017,15019,15021,15023,15025,15027,15029,15031,15033,15035,15037,15039,15041,15043,15045,15047,15049,15051,15053,15055,15057,15059,15061,15063,15065,15067],{"class":72,"line":3169},[70,15016,1803],{"class":275},[70,15018,635],{"class":76},[70,15020,279],{"class":200},[70,15022,1751],{"class":76},[70,15024,1549],{"class":275},[70,15026,635],{"class":76},[70,15028,279],{"class":200},[70,15030,1751],{"class":76},[70,15032,1549],{"class":275},[70,15034,635],{"class":76},[70,15036,1758],{"class":200},[70,15038,1767],{"class":275},[70,15040,635],{"class":76},[70,15042,279],{"class":200},[70,15044,1751],{"class":76},[70,15046,1780],{"class":275},[70,15048,635],{"class":76},[70,15050,1758],{"class":200},[70,15052,1767],{"class":275},[70,15054,635],{"class":76},[70,15056,1758],{"class":200},[70,15058,1780],{"class":275},[70,15060,635],{"class":76},[70,15062,279],{"class":200},[70,15064,1780],{"class":275},[70,15066,635],{"class":76},[70,15068,1797],{"class":200},[70,15070,15071,15073,15075,15077,15079,15081,15083,15085,15087,15089,15091,15093,15095,15097,15099,15101,15103,15105,15107,15109,15111,15113,15115,15117,15119,15121],{"class":72,"line":3226},[70,15072,1803],{"class":275},[70,15074,635],{"class":76},[70,15076,279],{"class":200},[70,15078,1751],{"class":76},[70,15080,1549],{"class":275},[70,15082,635],{"class":76},[70,15084,1758],{"class":200},[70,15086,1549],{"class":275},[70,15088,635],{"class":76},[70,15090,1758],{"class":200},[70,15092,1767],{"class":275},[70,15094,635],{"class":76},[70,15096,279],{"class":200},[70,15098,1751],{"class":76},[70,15100,1780],{"class":275},[70,15102,635],{"class":76},[70,15104,1758],{"class":200},[70,15106,1767],{"class":275},[70,15108,635],{"class":76},[70,15110,1758],{"class":200},[70,15112,1780],{"class":275},[70,15114,635],{"class":76},[70,15116,279],{"class":200},[70,15118,1767],{"class":275},[70,15120,635],{"class":76},[70,15122,1797],{"class":200},[70,15124,15125,15127,15129,15131,15133,15135,15137,15139,15141,15143,15145,15147,15149,15151,15153,15155,15157,15159,15161,15163,15165,15167,15169,15171,15173,15175],{"class":72,"line":3281},[70,15126,1803],{"class":275},[70,15128,635],{"class":76},[70,15130,279],{"class":200},[70,15132,1751],{"class":76},[70,15134,1549],{"class":275},[70,15136,635],{"class":76},[70,15138,1758],{"class":200},[70,15140,1549],{"class":275},[70,15142,635],{"class":76},[70,15144,1758],{"class":200},[70,15146,1767],{"class":275},[70,15148,635],{"class":76},[70,15150,279],{"class":200},[70,15152,1751],{"class":76},[70,15154,1780],{"class":275},[70,15156,635],{"class":76},[70,15158,1758],{"class":200},[70,15160,1767],{"class":275},[70,15162,635],{"class":76},[70,15164,1758],{"class":200},[70,15166,1780],{"class":275},[70,15168,635],{"class":76},[70,15170,279],{"class":200},[70,15172,1767],{"class":275},[70,15174,635],{"class":76},[70,15176,1797],{"class":200},[70,15178,15179,15181,15183,15185,15187,15189,15191,15193,15195,15197,15199,15201,15203,15205,15207,15209,15211,15213,15215,15217,15219,15221,15223,15225,15227,15229,15231],{"class":72,"line":3336},[70,15180,1742],{"class":76},[70,15182,1549],{"class":275},[70,15184,635],{"class":76},[70,15186,279],{"class":200},[70,15188,1751],{"class":76},[70,15190,1549],{"class":275},[70,15192,635],{"class":76},[70,15194,1758],{"class":200},[70,15196,1549],{"class":275},[70,15198,635],{"class":76},[70,15200,1758],{"class":200},[70,15202,1767],{"class":275},[70,15204,635],{"class":76},[70,15206,279],{"class":200},[70,15208,1751],{"class":76},[70,15210,1780],{"class":275},[70,15212,635],{"class":76},[70,15214,1758],{"class":200},[70,15216,1767],{"class":275},[70,15218,635],{"class":76},[70,15220,1758],{"class":200},[70,15222,1767],{"class":275},[70,15224,635],{"class":76},[70,15226,279],{"class":200},[70,15228,1767],{"class":275},[70,15230,635],{"class":76},[70,15232,1797],{"class":200},[70,15234,15235,15237,15239,15241,15243,15245,15247,15249,15251,15253,15255,15257,15259,15261,15263,15265,15267,15269,15271,15273,15275,15277,15279,15281,15283,15285,15287,15289],{"class":72,"line":3393},[70,15236,1742],{"class":76},[70,15238,1549],{"class":275},[70,15240,635],{"class":76},[70,15242,279],{"class":200},[70,15244,1751],{"class":76},[70,15246,1549],{"class":275},[70,15248,635],{"class":76},[70,15250,279],{"class":200},[70,15252,1751],{"class":76},[70,15254,1549],{"class":275},[70,15256,635],{"class":76},[70,15258,1758],{"class":200},[70,15260,1767],{"class":275},[70,15262,635],{"class":76},[70,15264,279],{"class":200},[70,15266,1751],{"class":76},[70,15268,1780],{"class":275},[70,15270,635],{"class":76},[70,15272,1758],{"class":200},[70,15274,1767],{"class":275},[70,15276,635],{"class":76},[70,15278,1758],{"class":200},[70,15280,1767],{"class":275},[70,15282,635],{"class":76},[70,15284,279],{"class":200},[70,15286,1780],{"class":275},[70,15288,635],{"class":76},[70,15290,1797],{"class":200},[70,15292,15293],{"class":72,"line":3452},[70,15294,291],{"class":200},[70,15296,15297],{"class":72,"line":3457},[70,15298,3460],{"class":224},[70,15300,15301,15303,15305,15307,15309,15311,15313,15315,15317,15319,15321,15323,15325,15327,15329,15331,15333,15335,15337,15339,15341,15343,15345,15347,15349,15351],{"class":72,"line":3463},[70,15302,1742],{"class":76},[70,15304,1549],{"class":275},[70,15306,635],{"class":76},[70,15308,1758],{"class":200},[70,15310,1549],{"class":275},[70,15312,635],{"class":76},[70,15314,279],{"class":200},[70,15316,1751],{"class":76},[70,15318,1549],{"class":275},[70,15320,635],{"class":76},[70,15322,1758],{"class":200},[70,15324,1767],{"class":275},[70,15326,635],{"class":76},[70,15328,1758],{"class":200},[70,15330,1780],{"class":275},[70,15332,635],{"class":76},[70,15334,1758],{"class":200},[70,15336,1767],{"class":275},[70,15338,635],{"class":76},[70,15340,1758],{"class":200},[70,15342,1767],{"class":275},[70,15344,635],{"class":76},[70,15346,279],{"class":200},[70,15348,1780],{"class":275},[70,15350,635],{"class":76},[70,15352,1797],{"class":200},[70,15354,15355,15357,15359,15361,15363,15365,15367,15369,15371,15373,15375,15377,15379,15381,15383,15385,15387,15389,15391,15393,15395,15397,15399,15401,15403],{"class":72,"line":3518},[70,15356,1803],{"class":275},[70,15358,635],{"class":76},[70,15360,1758],{"class":200},[70,15362,1549],{"class":275},[70,15364,635],{"class":76},[70,15366,279],{"class":200},[70,15368,1751],{"class":76},[70,15370,1549],{"class":275},[70,15372,635],{"class":76},[70,15374,1758],{"class":200},[70,15376,1767],{"class":275},[70,15378,635],{"class":76},[70,15380,1758],{"class":200},[70,15382,1780],{"class":275},[70,15384,635],{"class":76},[70,15386,1758],{"class":200},[70,15388,1767],{"class":275},[70,15390,635],{"class":76},[70,15392,1758],{"class":200},[70,15394,1780],{"class":275},[70,15396,635],{"class":76},[70,15398,279],{"class":200},[70,15400,1780],{"class":275},[70,15402,635],{"class":76},[70,15404,1797],{"class":200},[70,15406,15407,15409,15411,15413,15415,15417,15419,15421,15423,15425,15427,15429,15431,15433,15435,15437,15439,15441,15443,15445,15447,15449,15451,15453],{"class":72,"line":3571},[70,15408,1803],{"class":275},[70,15410,635],{"class":76},[70,15412,1758],{"class":200},[70,15414,1549],{"class":275},[70,15416,635],{"class":76},[70,15418,1758],{"class":200},[70,15420,1549],{"class":275},[70,15422,635],{"class":76},[70,15424,1758],{"class":200},[70,15426,1767],{"class":275},[70,15428,635],{"class":76},[70,15430,1758],{"class":200},[70,15432,1780],{"class":275},[70,15434,635],{"class":76},[70,15436,1758],{"class":200},[70,15438,1767],{"class":275},[70,15440,635],{"class":76},[70,15442,1758],{"class":200},[70,15444,1780],{"class":275},[70,15446,635],{"class":76},[70,15448,279],{"class":200},[70,15450,1767],{"class":275},[70,15452,635],{"class":76},[70,15454,1797],{"class":200},[70,15456,15457,15459,15461,15463,15465,15467,15469,15471,15473,15475,15477,15479,15481,15483,15485,15487,15489,15491,15493,15495,15497,15499,15501,15503],{"class":72,"line":3622},[70,15458,1803],{"class":275},[70,15460,635],{"class":76},[70,15462,1758],{"class":200},[70,15464,1549],{"class":275},[70,15466,635],{"class":76},[70,15468,1758],{"class":200},[70,15470,1549],{"class":275},[70,15472,635],{"class":76},[70,15474,1758],{"class":200},[70,15476,1767],{"class":275},[70,15478,635],{"class":76},[70,15480,1758],{"class":200},[70,15482,1780],{"class":275},[70,15484,635],{"class":76},[70,15486,1758],{"class":200},[70,15488,1767],{"class":275},[70,15490,635],{"class":76},[70,15492,1758],{"class":200},[70,15494,1780],{"class":275},[70,15496,635],{"class":76},[70,15498,279],{"class":200},[70,15500,1767],{"class":275},[70,15502,635],{"class":76},[70,15504,1797],{"class":200},[70,15506,15507,15509,15511,15513,15515,15517,15519,15521,15523,15525,15527,15529,15531,15533,15535,15537,15539,15541,15543,15545,15547,15549,15551,15553,15555],{"class":72,"line":3673},[70,15508,1742],{"class":76},[70,15510,1549],{"class":275},[70,15512,635],{"class":76},[70,15514,1758],{"class":200},[70,15516,1549],{"class":275},[70,15518,635],{"class":76},[70,15520,1758],{"class":200},[70,15522,1549],{"class":275},[70,15524,635],{"class":76},[70,15526,1758],{"class":200},[70,15528,1767],{"class":275},[70,15530,635],{"class":76},[70,15532,1758],{"class":200},[70,15534,1780],{"class":275},[70,15536,635],{"class":76},[70,15538,1758],{"class":200},[70,15540,1767],{"class":275},[70,15542,635],{"class":76},[70,15544,1758],{"class":200},[70,15546,1767],{"class":275},[70,15548,635],{"class":76},[70,15550,279],{"class":200},[70,15552,1767],{"class":275},[70,15554,635],{"class":76},[70,15556,1797],{"class":200},[70,15558,15559,15561,15563,15565,15567,15569,15571,15573,15575,15577,15579,15581,15583,15585,15587,15589,15591,15593,15595,15597,15599,15601,15603,15605,15607],{"class":72,"line":3726},[70,15560,1742],{"class":76},[70,15562,1549],{"class":275},[70,15564,635],{"class":76},[70,15566,1758],{"class":200},[70,15568,1549],{"class":275},[70,15570,635],{"class":76},[70,15572,279],{"class":200},[70,15574,1751],{"class":76},[70,15576,1549],{"class":275},[70,15578,635],{"class":76},[70,15580,1758],{"class":200},[70,15582,1767],{"class":275},[70,15584,635],{"class":76},[70,15586,1758],{"class":200},[70,15588,1780],{"class":275},[70,15590,635],{"class":76},[70,15592,1758],{"class":200},[70,15594,1767],{"class":275},[70,15596,635],{"class":76},[70,15598,1758],{"class":200},[70,15600,1767],{"class":275},[70,15602,635],{"class":76},[70,15604,279],{"class":200},[70,15606,1780],{"class":275},[70,15608,3777],{"class":76},[70,15610,15611],{"class":72,"line":3780},[70,15612,3783],{"class":200},[70,15614,15615],{"class":72,"line":3786},[70,15616,291],{"class":200},[70,15618,15619],{"class":72,"line":3791},[70,15620,3794],{"class":224},[70,15622,15623,15625,15627],{"class":72,"line":3797},[70,15624,259],{"class":76},[70,15626,234],{"class":76},[70,15628,3804],{"class":200},[70,15630,15631,15633,15635,15637,15639,15641],{"class":72,"line":3807},[70,15632,3810],{"class":196},[70,15634,240],{"class":200},[70,15636,276],{"class":275},[70,15638,279],{"class":200},[70,15640,282],{"class":76},[70,15642,3821],{"class":200},[70,15644,15645,15647,15649],{"class":72,"line":3824},[70,15646,3827],{"class":196},[70,15648,3830],{"class":200},[70,15650,3833],{"class":224},[70,15652,15653],{"class":72,"line":3836},[70,15654,184],{"emptyLinePlaceholder":183},[70,15656,15657],{"class":72,"line":3841},[70,15658,3844],{"class":224},[70,15660,15661,15663,15665],{"class":72,"line":3847},[70,15662,259],{"class":76},[70,15664,234],{"class":76},[70,15666,3854],{"class":200},[70,15668,15669,15671,15673,15675,15677,15679],{"class":72,"line":3857},[70,15670,3860],{"class":196},[70,15672,240],{"class":200},[70,15674,276],{"class":275},[70,15676,279],{"class":200},[70,15678,282],{"class":76},[70,15680,3871],{"class":200},[70,15682,15683,15685,15687],{"class":72,"line":3874},[70,15684,3877],{"class":196},[70,15686,3880],{"class":200},[70,15688,3883],{"class":224},[70,15690,15691,15693,15695,15697],{"class":72,"line":3886},[70,15692,3889],{"class":196},[70,15694,3892],{"class":200},[70,15696,3895],{"class":76},[70,15698,3898],{"class":200},[70,15700,15701],{"class":72,"line":3901},[70,15702,184],{"emptyLinePlaceholder":183},[70,15704,15705,15707],{"class":72,"line":3906},[70,15706,3909],{"class":76},[70,15708,3912],{"class":200},[70,15710,15711,15713,15715,15717],{"class":72,"line":3915},[70,15712,3918],{"class":196},[70,15714,3921],{"class":200},[70,15716,282],{"class":76},[70,15718,3926],{"class":200},[70,15720,15721,15723,15725,15727,15729,15731,15733,15735,15737],{"class":72,"line":3929},[70,15722,3932],{"class":196},[70,15724,339],{"class":200},[70,15726,342],{"class":76},[70,15728,3939],{"class":80},[70,15730,348],{"class":76},[70,15732,3944],{"class":200},[70,15734,342],{"class":76},[70,15736,356],{"class":196},[70,15738,359],{"class":200},[70,15740,15741],{"class":72,"line":3953},[70,15742,184],{"emptyLinePlaceholder":183},[70,15744,15745],{"class":72,"line":3958},[70,15746,3961],{"class":224},[70,15748,15749,15751,15753,15755,15757,15759,15761,15763,15765,15767,15769,15771,15773,15775,15777,15779],{"class":72,"line":3964},[70,15750,3967],{"class":196},[70,15752,240],{"class":200},[70,15754,424],{"class":275},[70,15756,279],{"class":200},[70,15758,1065],{"class":275},[70,15760,3978],{"class":200},[70,15762,3981],{"class":275},[70,15764,746],{"class":76},[70,15766,3986],{"class":76},[70,15768,240],{"class":200},[70,15770,624],{"class":76},[70,15772,998],{"class":200},[70,15774,3995],{"class":76},[70,15776,1003],{"class":200},[70,15778,424],{"class":275},[70,15780,427],{"class":200},[70,15782,15783,15785,15787,15789,15791],{"class":72,"line":4004},[70,15784,4007],{"class":196},[70,15786,240],{"class":200},[70,15788,424],{"class":275},[70,15790,4014],{"class":200},[70,15792,4017],{"class":224},[70,15794,15795],{"class":72,"line":4020},[70,15796,291],{"class":200},[70,15798,15799],{"class":72,"line":4025},[70,15800,4028],{"class":224},[70,15802,15803,15805,15807,15809,15811,15813,15815,15817,15819,15821,15823,15825,15827,15829,15831,15833,15835,15837,15839,15841],{"class":72,"line":4031},[70,15804,3967],{"class":196},[70,15806,240],{"class":200},[70,15808,276],{"class":275},[70,15810,279],{"class":200},[70,15812,1065],{"class":275},[70,15814,3978],{"class":200},[70,15816,3981],{"class":275},[70,15818,746],{"class":76},[70,15820,3986],{"class":76},[70,15822,240],{"class":200},[70,15824,624],{"class":76},[70,15826,998],{"class":200},[70,15828,3995],{"class":76},[70,15830,4060],{"class":200},[70,15832,1065],{"class":275},[70,15834,746],{"class":76},[70,15836,3986],{"class":76},[70,15838,240],{"class":200},[70,15840,624],{"class":76},[70,15842,4073],{"class":200},[70,15844,15845,15847,15849,15851,15853],{"class":72,"line":4076},[70,15846,4007],{"class":196},[70,15848,240],{"class":200},[70,15850,276],{"class":275},[70,15852,4014],{"class":200},[70,15854,4087],{"class":224},[70,15856,15857],{"class":72,"line":4090},[70,15858,291],{"class":200},[70,15860,15861],{"class":72,"line":4095},[70,15862,4098],{"class":224},[70,15864,15865,15867,15869,15871,15873,15875,15877,15879,15881,15883,15885,15887,15889,15891,15893,15895,15897,15899,15901,15903],{"class":72,"line":4101},[70,15866,3967],{"class":196},[70,15868,240],{"class":200},[70,15870,4108],{"class":275},[70,15872,279],{"class":200},[70,15874,4108],{"class":275},[70,15876,3978],{"class":200},[70,15878,3981],{"class":275},[70,15880,746],{"class":76},[70,15882,3986],{"class":76},[70,15884,240],{"class":200},[70,15886,624],{"class":76},[70,15888,998],{"class":200},[70,15890,3995],{"class":76},[70,15892,4060],{"class":200},[70,15894,4133],{"class":275},[70,15896,746],{"class":76},[70,15898,3986],{"class":76},[70,15900,240],{"class":200},[70,15902,624],{"class":76},[70,15904,4073],{"class":200},[70,15906,15907,15909,15911,15913,15915],{"class":72,"line":4146},[70,15908,4007],{"class":196},[70,15910,240],{"class":200},[70,15912,4108],{"class":275},[70,15914,4014],{"class":200},[70,15916,4157],{"class":224},[70,15918,15919],{"class":72,"line":4160},[70,15920,184],{"emptyLinePlaceholder":183},[70,15922,15923],{"class":72,"line":4165},[70,15924,4168],{"class":224},[70,15926,15927,15929,15931,15933,15935,15937,15939],{"class":72,"line":4171},[70,15928,4174],{"class":196},[70,15930,4177],{"class":196},[70,15932,240],{"class":200},[70,15934,4182],{"class":80},[70,15936,279],{"class":200},[70,15938,4187],{"class":80},[70,15940,427],{"class":200},[70,15942,15943,15945,15947,15949,15951,15953,15955],{"class":72,"line":4192},[70,15944,4174],{"class":196},[70,15946,4197],{"class":196},[70,15948,240],{"class":200},[70,15950,4202],{"class":80},[70,15952,279],{"class":200},[70,15954,4207],{"class":80},[70,15956,427],{"class":200},[70,15958,15959],{"class":72,"line":4212},[70,15960,184],{"emptyLinePlaceholder":183},[70,15962,15963],{"class":72,"line":4217},[70,15964,4220],{"class":224},[70,15966,15967,15969,15971,15973,15975,15977,15979,15981],{"class":72,"line":4223},[70,15968,259],{"class":76},[70,15970,234],{"class":76},[70,15972,4230],{"class":200},[70,15974,309],{"class":76},[70,15976,237],{"class":196},[70,15978,240],{"class":200},[70,15980,4239],{"class":80},[70,15982,427],{"class":200},[70,15984,15985,15987,15989,15991,15993],{"class":72,"line":4244},[70,15986,321],{"class":76},[70,15988,4249],{"class":200},[70,15990,792],{"class":76},[70,15992,4254],{"class":275},[70,15994,253],{"class":200},[70,15996,15997,15999,16001,16003,16005,16007,16009],{"class":72,"line":4259},[70,15998,336],{"class":196},[70,16000,339],{"class":200},[70,16002,342],{"class":76},[70,16004,4268],{"class":80},[70,16006,348],{"class":76},[70,16008,356],{"class":196},[70,16010,359],{"class":200},[70,16012,16013],{"class":72,"line":4277},[70,16014,373],{"class":200},[70,16016,16017],{"class":72,"line":4282},[70,16018,184],{"emptyLinePlaceholder":183},[70,16020,16021],{"class":72,"line":4287},[70,16022,4290],{"class":224},[70,16024,16025,16027,16029],{"class":72,"line":4293},[70,16026,259],{"class":76},[70,16028,234],{"class":76},[70,16030,4300],{"class":200},[70,16032,16033,16035,16037,16039,16041,16043],{"class":72,"line":4303},[70,16034,3810],{"class":196},[70,16036,240],{"class":200},[70,16038,276],{"class":275},[70,16040,279],{"class":200},[70,16042,282],{"class":76},[70,16044,4316],{"class":200},[70,16046,16047,16049],{"class":72,"line":4319},[70,16048,3827],{"class":196},[70,16050,4324],{"class":200},[70,16052,16053,16055],{"class":72,"line":4327},[70,16054,3877],{"class":196},[70,16056,4332],{"class":200},[70,16058,16059,16061,16063,16065,16067,16069,16071,16073,16075,16077,16079,16081,16083,16085,16087,16089],{"class":72,"line":4335},[70,16060,3967],{"class":196},[70,16062,240],{"class":200},[70,16064,424],{"class":275},[70,16066,279],{"class":200},[70,16068,1065],{"class":275},[70,16070,3978],{"class":200},[70,16072,3981],{"class":275},[70,16074,746],{"class":76},[70,16076,3986],{"class":76},[70,16078,240],{"class":200},[70,16080,624],{"class":76},[70,16082,998],{"class":200},[70,16084,3995],{"class":76},[70,16086,1003],{"class":200},[70,16088,424],{"class":275},[70,16090,427],{"class":200},[70,16092,16093,16095,16097,16099],{"class":72,"line":4370},[70,16094,4007],{"class":196},[70,16096,240],{"class":200},[70,16098,424],{"class":275},[70,16100,427],{"class":200},[70,16102,16103],{"class":72,"line":4381},[70,16104,184],{"emptyLinePlaceholder":183},[70,16106,16107],{"class":72,"line":4386},[70,16108,4389],{"class":224},[70,16110,16111,16113,16115,16117,16119,16121,16123,16125,16127,16129,16131,16133],{"class":72,"line":4392},[70,16112,4395],{"class":196},[70,16114,4398],{"class":196},[70,16116,240],{"class":200},[70,16118,4403],{"class":275},[70,16120,635],{"class":76},[70,16122,279],{"class":200},[70,16124,1780],{"class":275},[70,16126,635],{"class":76},[70,16128,279],{"class":200},[70,16130,4416],{"class":275},[70,16132,635],{"class":76},[70,16134,427],{"class":200},[70,16136,16137],{"class":72,"line":4423},[70,16138,291],{"class":200},[70,16140,16141],{"class":72,"line":4428},[70,16142,4431],{"class":224},[70,16144,16145,16147,16149,16151,16153,16155],{"class":72,"line":4434},[70,16146,4395],{"class":196},[70,16148,4439],{"class":200},[70,16150,309],{"class":76},[70,16152,925],{"class":200},[70,16154,4446],{"class":196},[70,16156,1053],{"class":200},[70,16158,16159],{"class":72,"line":4451},[70,16160,184],{"emptyLinePlaceholder":183},[70,16162,16163],{"class":72,"line":4456},[70,16164,4459],{"class":224},[70,16166,16167,16169,16171,16173,16175],{"class":72,"line":4462},[70,16168,4465],{"class":76},[70,16170,783],{"class":200},[70,16172,1285],{"class":76},[70,16174,4472],{"class":196},[70,16176,4475],{"class":200},[70,16178,16179],{"class":72,"line":4478},[70,16180,4481],{"class":224},[70,16182,16183,16185],{"class":72,"line":4484},[70,16184,4487],{"class":196},[70,16186,770],{"class":200},[70,16188,16189,16191],{"class":72,"line":4492},[70,16190,4495],{"class":196},[70,16192,1053],{"class":200},[70,16194,16195],{"class":72,"line":4500},[70,16196,184],{"emptyLinePlaceholder":183},[70,16198,16199],{"class":72,"line":4505},[70,16200,4508],{"class":224},[70,16202,16203,16205,16207,16209,16211,16213],{"class":72,"line":4511},[70,16204,4514],{"class":196},[70,16206,4517],{"class":200},[70,16208,309],{"class":76},[70,16210,925],{"class":200},[70,16212,4524],{"class":196},[70,16214,1053],{"class":200},[70,16216,16217],{"class":72,"line":4529},[70,16218,1450],{"class":200},[70,16220,16221,16223,16225,16227,16229],{"class":72,"line":4534},[70,16222,1502],{"class":76},[70,16224,4539],{"class":200},[70,16226,309],{"class":76},[70,16228,4544],{"class":196},[70,16230,1053],{"class":200},[70,16232,16233,16235,16237,16239,16241],{"class":72,"line":4549},[70,16234,4552],{"class":200},[70,16236,309],{"class":76},[70,16238,4539],{"class":200},[70,16240,1751],{"class":76},[70,16242,4561],{"class":200},[70,16244,16245,16247,16249],{"class":72,"line":4564},[70,16246,4567],{"class":200},[70,16248,309],{"class":76},[70,16250,4572],{"class":200},[70,16252,16253],{"class":72,"line":4575},[70,16254,184],{"emptyLinePlaceholder":183},[70,16256,16257],{"class":72,"line":4580},[70,16258,4583],{"class":224},[70,16260,16261,16263,16265,16267,16269,16271,16273,16275,16277,16279,16281,16283,16285,16287],{"class":72,"line":4586},[70,16262,4589],{"class":196},[70,16264,240],{"class":200},[70,16266,4594],{"class":275},[70,16268,635],{"class":76},[70,16270,279],{"class":200},[70,16272,4601],{"class":275},[70,16274,635],{"class":76},[70,16276,279],{"class":200},[70,16278,4601],{"class":275},[70,16280,635],{"class":76},[70,16282,279],{"class":200},[70,16284,1780],{"class":275},[70,16286,635],{"class":76},[70,16288,427],{"class":200},[70,16290,16291,16293,16295,16297],{"class":72,"line":4620},[70,16292,4623],{"class":196},[70,16294,4626],{"class":200},[70,16296,4629],{"class":76},[70,16298,4632],{"class":200},[70,16300,16301],{"class":72,"line":4635},[70,16302,1450],{"class":200},[70,16304,16305],{"class":72,"line":4640},[70,16306,4643],{"class":224},[70,16308,16309,16311,16313],{"class":72,"line":4646},[70,16310,4649],{"class":200},[70,16312,4652],{"class":196},[70,16314,1053],{"class":200},[70,16316,16317],{"class":72,"line":4657},[70,16318,1450],{"class":200},[70,16320,16321],{"class":72,"line":4662},[70,16322,4665],{"class":224},[70,16324,16325,16327],{"class":72,"line":4668},[70,16326,4671],{"class":196},[70,16328,4674],{"class":200},[70,16330,16331,16333],{"class":72,"line":4677},[70,16332,4680],{"class":196},[70,16334,4683],{"class":200},[70,16336,16337,16339,16341,16343,16345,16347,16349],{"class":72,"line":4686},[70,16338,4649],{"class":200},[70,16340,4691],{"class":196},[70,16342,240],{"class":200},[70,16344,4696],{"class":80},[70,16346,279],{"class":200},[70,16348,424],{"class":275},[70,16350,427],{"class":200},[70,16352,16353],{"class":72,"line":4705},[70,16354,1450],{"class":200},[70,16356,16357],{"class":72,"line":4710},[70,16358,4963],{"class":224},[70,16360,16361,16363,16365,16367,16369,16371],{"class":72,"line":4726},[70,16362,4969],{"class":196},[70,16364,4972],{"class":200},[70,16366,309],{"class":76},[70,16368,925],{"class":200},[70,16370,4446],{"class":196},[70,16372,1053],{"class":200},[70,16374,16375,16377,16380,16382,16384,16387],{"class":72,"line":4741},[70,16376,4969],{"class":196},[70,16378,16379],{"class":200}," cameraFront ",[70,16381,309],{"class":76},[70,16383,925],{"class":200},[70,16385,16386],{"class":196},"getCameraFront",[70,16388,1053],{"class":200},[70,16390,16391],{"class":72,"line":4780},[70,16392,1450],{"class":200},[70,16394,16395,16397,16399,16401,16403],{"class":72,"line":4815},[70,16396,4649],{"class":200},[70,16398,4715],{"class":196},[70,16400,240],{"class":200},[70,16402,4720],{"class":80},[70,16404,4723],{"class":200},[70,16406,16407,16409,16411,16413,16415],{"class":72,"line":4850},[70,16408,4649],{"class":200},[70,16410,4715],{"class":196},[70,16412,240],{"class":200},[70,16414,4735],{"class":80},[70,16416,4738],{"class":200},[70,16418,16419],{"class":72,"line":4883},[70,16420,1450],{"class":200},[70,16422,16423],{"class":72,"line":4917},[70,16424,16425],{"class":224},"        \u002F\u002F 手电筒效果：使用相机位置和朝向\n",[70,16427,16428,16430,16432,16434,16436],{"class":72,"line":4923},[70,16429,4649],{"class":200},[70,16431,4746],{"class":196},[70,16433,240],{"class":200},[70,16435,10108],{"class":80},[70,16437,4995],{"class":200},[70,16439,16440,16442,16444,16446,16448],{"class":72,"line":4955},[70,16441,4649],{"class":200},[70,16443,4746],{"class":196},[70,16445,240],{"class":200},[70,16447,4751],{"class":80},[70,16449,16450],{"class":200},", cameraFront.x, cameraFront.y, cameraFront.z);\n",[70,16452,16453,16455,16457,16459,16461,16463,16465,16467,16469,16471,16473,16475,16477,16479,16481,16483,16486],{"class":72,"line":4960},[70,16454,4649],{"class":200},[70,16456,4928],{"class":196},[70,16458,240],{"class":200},[70,16460,11896],{"class":80},[70,16462,279],{"class":200},[70,16464,5485],{"class":196},[70,16466,1107],{"class":200},[70,16468,11906],{"class":196},[70,16470,240],{"class":200},[70,16472,5485],{"class":196},[70,16474,1107],{"class":200},[70,16476,988],{"class":196},[70,16478,240],{"class":200},[70,16480,11919],{"class":275},[70,16482,635],{"class":76},[70,16484,16485],{"class":200},")));",[70,16487,16488],{"class":224}," \u002F\u002F 内切角\n",[70,16490,16491,16493,16495,16497,16500,16502,16504,16506,16508,16510,16512,16514,16516,16518,16520,16522,16524],{"class":72,"line":4966},[70,16492,4649],{"class":200},[70,16494,4928],{"class":196},[70,16496,240],{"class":200},[70,16498,16499],{"class":80},"\"light.outerCutOff\"",[70,16501,279],{"class":200},[70,16503,5485],{"class":196},[70,16505,1107],{"class":200},[70,16507,11906],{"class":196},[70,16509,240],{"class":200},[70,16511,5485],{"class":196},[70,16513,1107],{"class":200},[70,16515,988],{"class":196},[70,16517,240],{"class":200},[70,16519,12212],{"class":275},[70,16521,635],{"class":76},[70,16523,16485],{"class":200},[70,16525,16526],{"class":224}," \u002F\u002F 外切角\n",[70,16528,16529,16531,16533,16535,16537,16539,16541,16543],{"class":72,"line":4983},[70,16530,4649],{"class":200},[70,16532,4928],{"class":196},[70,16534,240],{"class":200},[70,16536,10122],{"class":80},[70,16538,279],{"class":200},[70,16540,1780],{"class":275},[70,16542,635],{"class":76},[70,16544,427],{"class":200},[70,16546,16547,16549,16551,16553,16555,16557,16559,16561],{"class":72,"line":4998},[70,16548,4649],{"class":200},[70,16550,4928],{"class":196},[70,16552,240],{"class":200},[70,16554,10141],{"class":80},[70,16556,279],{"class":200},[70,16558,5978],{"class":275},[70,16560,635],{"class":76},[70,16562,427],{"class":200},[70,16564,16565,16567,16569,16571,16573,16575,16577,16579],{"class":72,"line":5003},[70,16566,4649],{"class":200},[70,16568,4928],{"class":196},[70,16570,240],{"class":200},[70,16572,10160],{"class":80},[70,16574,279],{"class":200},[70,16576,5981],{"class":275},[70,16578,635],{"class":76},[70,16580,427],{"class":200},[70,16582,16583,16585,16587,16589,16591,16593,16595,16597,16599,16601,16603,16605,16607,16609,16611],{"class":72,"line":5012},[70,16584,4649],{"class":200},[70,16586,4746],{"class":196},[70,16588,240],{"class":200},[70,16590,4789],{"class":80},[70,16592,1758],{"class":200},[70,16594,685],{"class":275},[70,16596,635],{"class":76},[70,16598,279],{"class":200},[70,16600,685],{"class":275},[70,16602,635],{"class":76},[70,16604,279],{"class":200},[70,16606,685],{"class":275},[70,16608,635],{"class":76},[70,16610,4014],{"class":200},[70,16612,16613],{"class":224},"   \u002F\u002F 降低环境光强度，只有聚光灯照到的地方才亮\n",[70,16615,16616,16618,16620,16622,16624,16626,16628,16630,16632,16634,16636,16638,16640,16642,16644],{"class":72,"line":5017},[70,16617,4649],{"class":200},[70,16619,4746],{"class":196},[70,16621,240],{"class":200},[70,16623,4824],{"class":80},[70,16625,1758],{"class":200},[70,16627,1780],{"class":275},[70,16629,635],{"class":76},[70,16631,279],{"class":200},[70,16633,1780],{"class":275},[70,16635,635],{"class":76},[70,16637,279],{"class":200},[70,16639,1780],{"class":275},[70,16641,635],{"class":76},[70,16643,4014],{"class":200},[70,16645,16646],{"class":224},"   \u002F\u002F 漫反射强度\n",[70,16648,16649,16651,16653,16655,16657,16659,16661,16663,16665,16667,16669,16671,16673,16675],{"class":72,"line":5023},[70,16650,4649],{"class":200},[70,16652,4746],{"class":196},[70,16654,240],{"class":200},[70,16656,4859],{"class":80},[70,16658,279],{"class":200},[70,16660,1780],{"class":275},[70,16662,635],{"class":76},[70,16664,279],{"class":200},[70,16666,1780],{"class":275},[70,16668,635],{"class":76},[70,16670,279],{"class":200},[70,16672,1780],{"class":275},[70,16674,635],{"class":76},[70,16676,4880],{"class":200},[70,16678,16679,16681,16683,16685,16687,16689,16691,16693,16695,16697,16699,16701,16703,16705],{"class":72,"line":5041},[70,16680,4649],{"class":200},[70,16682,4746],{"class":196},[70,16684,240],{"class":200},[70,16686,4892],{"class":80},[70,16688,279],{"class":200},[70,16690,4897],{"class":275},[70,16692,635],{"class":76},[70,16694,279],{"class":200},[70,16696,4904],{"class":275},[70,16698,635],{"class":76},[70,16700,279],{"class":200},[70,16702,4897],{"class":275},[70,16704,635],{"class":76},[70,16706,427],{"class":200},[70,16708,16709],{"class":72,"line":5073},[70,16710,4920],{"class":224},[70,16712,16713,16715,16717,16719,16721,16723,16725,16727,16729,16731,16733,16735],{"class":72,"line":5102},[70,16714,4649],{"class":200},[70,16716,4928],{"class":196},[70,16718,240],{"class":200},[70,16720,4933],{"class":80},[70,16722,279],{"class":200},[70,16724,4938],{"class":275},[70,16726,635],{"class":76},[70,16728,746],{"class":76},[70,16730,4945],{"class":275},[70,16732,635],{"class":76},[70,16734,4014],{"class":200},[70,16736,4952],{"class":224},[70,16738,16739],{"class":72,"line":5133},[70,16740,1450],{"class":200},[70,16742,16743],{"class":72,"line":5164},[70,16744,16745],{"class":224},"        \u002F\u002F 设置相机位置（用于镜面反射计算）\n",[70,16747,16748,16750,16752,16754,16756],{"class":72,"line":5193},[70,16749,4649],{"class":200},[70,16751,4746],{"class":196},[70,16753,240],{"class":200},[70,16755,4992],{"class":80},[70,16757,4995],{"class":200},[70,16759,16760],{"class":72,"line":5224},[70,16761,1450],{"class":200},[70,16763,16764,16766],{"class":72,"line":5257},[70,16765,5006],{"class":196},[70,16767,5009],{"class":200},[70,16769,16770],{"class":72,"line":5286},[70,16771,1450],{"class":200},[70,16773,16774],{"class":72,"line":5317},[70,16775,5020],{"class":224},[70,16777,16778,16780,16782,16784,16786,16788],{"class":72,"line":5347},[70,16779,5026],{"class":196},[70,16781,1107],{"class":200},[70,16783,5031],{"class":196},[70,16785,5034],{"class":200},[70,16787,309],{"class":76},[70,16789,1718],{"class":200},[70,16791,16792,16794,16796,16798,16800,16802,16804,16806,16808,16810,16812,16814,16816],{"class":72,"line":5353},[70,16793,5044],{"class":196},[70,16795,1107],{"class":200},[70,16797,5031],{"class":196},[70,16799,5051],{"class":200},[70,16801,1767],{"class":275},[70,16803,635],{"class":76},[70,16805,1758],{"class":200},[70,16807,1767],{"class":275},[70,16809,635],{"class":76},[70,16811,1758],{"class":200},[70,16813,1767],{"class":275},[70,16815,635],{"class":76},[70,16817,5070],{"class":200},[70,16819,16820,16822,16824,16826,16828,16830,16832,16834,16836,16838,16840,16842,16844],{"class":72,"line":5358},[70,16821,5044],{"class":196},[70,16823,1107],{"class":200},[70,16825,5031],{"class":196},[70,16827,5051],{"class":200},[70,16829,10429],{"class":275},[70,16831,635],{"class":76},[70,16833,1758],{"class":200},[70,16835,1767],{"class":275},[70,16837,635],{"class":76},[70,16839,1758],{"class":200},[70,16841,1767],{"class":275},[70,16843,635],{"class":76},[70,16845,5070],{"class":200},[70,16847,16848,16850,16852,16854,16856,16858,16860,16862,16864,16866,16868,16870,16872,16874],{"class":72,"line":5394},[70,16849,5044],{"class":196},[70,16851,1107],{"class":200},[70,16853,5031],{"class":196},[70,16855,240],{"class":200},[70,16857,1751],{"class":76},[70,16859,10429],{"class":275},[70,16861,635],{"class":76},[70,16863,1758],{"class":200},[70,16865,1767],{"class":275},[70,16867,635],{"class":76},[70,16869,1758],{"class":200},[70,16871,1767],{"class":275},[70,16873,635],{"class":76},[70,16875,5070],{"class":200},[70,16877,16878,16880,16882,16884,16886,16888,16890,16892,16894,16896,16898,16900,16902,16904],{"class":72,"line":5400},[70,16879,5044],{"class":196},[70,16881,1107],{"class":200},[70,16883,5031],{"class":196},[70,16885,5051],{"class":200},[70,16887,1767],{"class":275},[70,16889,635],{"class":76},[70,16891,1758],{"class":200},[70,16893,1767],{"class":275},[70,16895,635],{"class":76},[70,16897,279],{"class":200},[70,16899,1751],{"class":76},[70,16901,10502],{"class":275},[70,16903,635],{"class":76},[70,16905,5070],{"class":200},[70,16907,16908,16910,16912,16914,16916,16918,16920,16922,16924,16926,16928,16930,16932],{"class":72,"line":5429},[70,16909,5044],{"class":196},[70,16911,1107],{"class":200},[70,16913,5031],{"class":196},[70,16915,5051],{"class":200},[70,16917,1767],{"class":275},[70,16919,635],{"class":76},[70,16921,1758],{"class":200},[70,16923,1767],{"class":275},[70,16925,635],{"class":76},[70,16927,1758],{"class":200},[70,16929,10502],{"class":275},[70,16931,635],{"class":76},[70,16933,5070],{"class":200},[70,16935,16936,16938,16940,16942,16944,16946,16948,16950,16952,16954,16956,16958,16960,16962],{"class":72,"line":5447},[70,16937,5044],{"class":196},[70,16939,1107],{"class":200},[70,16941,5031],{"class":196},[70,16943,5051],{"class":200},[70,16945,10502],{"class":275},[70,16947,635],{"class":76},[70,16949,1758],{"class":200},[70,16951,1767],{"class":275},[70,16953,635],{"class":76},[70,16955,279],{"class":200},[70,16957,1751],{"class":76},[70,16959,10502],{"class":275},[70,16961,635],{"class":76},[70,16963,5070],{"class":200},[70,16965,16966,16968,16970,16972,16974,16976,16978,16980,16982,16984,16986,16988,16990,16992,16994],{"class":72,"line":5468},[70,16967,5044],{"class":196},[70,16969,1107],{"class":200},[70,16971,5031],{"class":196},[70,16973,240],{"class":200},[70,16975,1751],{"class":76},[70,16977,10579],{"class":275},[70,16979,635],{"class":76},[70,16981,1758],{"class":200},[70,16983,1767],{"class":275},[70,16985,635],{"class":76},[70,16987,279],{"class":200},[70,16989,1751],{"class":76},[70,16991,4416],{"class":275},[70,16993,635],{"class":76},[70,16995,5070],{"class":200},[70,16997,16998,17000,17002,17004,17006,17008,17010,17012,17014,17016,17018,17020,17022],{"class":72,"line":5522},[70,16999,5044],{"class":196},[70,17001,1107],{"class":200},[70,17003,5031],{"class":196},[70,17005,5051],{"class":200},[70,17007,4416],{"class":275},[70,17009,635],{"class":76},[70,17011,1758],{"class":200},[70,17013,1767],{"class":275},[70,17015,635],{"class":76},[70,17017,1758],{"class":200},[70,17019,4416],{"class":275},[70,17021,635],{"class":76},[70,17023,5070],{"class":200},[70,17025,17026,17028,17030,17032,17034,17036,17038,17040,17042,17044,17046,17048,17050,17052],{"class":72,"line":5538},[70,17027,5044],{"class":196},[70,17029,1107],{"class":200},[70,17031,5031],{"class":196},[70,17033,240],{"class":200},[70,17035,1751],{"class":76},[70,17037,4416],{"class":275},[70,17039,635],{"class":76},[70,17041,1758],{"class":200},[70,17043,1767],{"class":275},[70,17045,635],{"class":76},[70,17047,1758],{"class":200},[70,17049,4416],{"class":275},[70,17051,635],{"class":76},[70,17053,5070],{"class":200},[70,17055,17056,17058,17060,17062,17064,17066,17068,17070,17072,17074,17076,17078,17080],{"class":72,"line":5543},[70,17057,5044],{"class":196},[70,17059,1107],{"class":200},[70,17061,5031],{"class":196},[70,17063,5051],{"class":200},[70,17065,1767],{"class":275},[70,17067,635],{"class":76},[70,17069,1758],{"class":200},[70,17071,4416],{"class":275},[70,17073,635],{"class":76},[70,17075,1758],{"class":200},[70,17077,1767],{"class":275},[70,17079,635],{"class":76},[70,17081,5344],{"class":200},[70,17083,17084],{"class":72,"line":5561},[70,17085,5350],{"class":200},[70,17087,17088],{"class":72,"line":5566},[70,17089,1450],{"class":200},[70,17091,17092,17094,17096,17098,17100,17102,17104,17106,17108,17110,17112,17114,17116],{"class":72,"line":5571},[70,17093,5361],{"class":76},[70,17095,240],{"class":200},[70,17097,231],{"class":76},[70,17099,234],{"class":76},[70,17101,5370],{"class":200},[70,17103,309],{"class":76},[70,17105,4254],{"class":275},[70,17107,5377],{"class":200},[70,17109,5380],{"class":76},[70,17111,5383],{"class":275},[70,17113,5386],{"class":200},[70,17115,5389],{"class":76},[70,17117,5344],{"class":200},[70,17119,17120],{"class":72,"line":5577},[70,17121,5397],{"class":200},[70,17123,17124,17126,17128,17130,17132,17134,17136,17138,17140,17142,17144,17146],{"class":72,"line":5583},[70,17125,5044],{"class":196},[70,17127,1107],{"class":200},[70,17129,5407],{"class":196},[70,17131,5410],{"class":200},[70,17133,309],{"class":76},[70,17135,197],{"class":196},[70,17137,1107],{"class":200},[70,17139,5407],{"class":196},[70,17141,240],{"class":200},[70,17143,1780],{"class":275},[70,17145,635],{"class":76},[70,17147,427],{"class":200},[70,17149,17150,17152,17154,17156,17158,17160],{"class":72,"line":5589},[70,17151,5432],{"class":200},[70,17153,309],{"class":76},[70,17155,197],{"class":196},[70,17157,1107],{"class":200},[70,17159,5441],{"class":196},[70,17161,5444],{"class":200},[70,17163,17164,17166,17168,17170,17172,17174,17176],{"class":72,"line":5595},[70,17165,5450],{"class":76},[70,17167,5453],{"class":200},[70,17169,309],{"class":76},[70,17171,5458],{"class":275},[70,17173,635],{"class":76},[70,17175,746],{"class":76},[70,17177,5465],{"class":200},[70,17179,17180,17182,17184,17186,17188,17190,17192,17194,17196,17198,17200,17202,17204,17206,17208,17210,17212,17214,17216,17218,17220,17222,17224],{"class":72,"line":5601},[70,17181,5432],{"class":200},[70,17183,309],{"class":76},[70,17185,197],{"class":196},[70,17187,1107],{"class":200},[70,17189,5479],{"class":196},[70,17191,5482],{"class":200},[70,17193,5485],{"class":196},[70,17195,1107],{"class":200},[70,17197,988],{"class":196},[70,17199,5492],{"class":200},[70,17201,5485],{"class":196},[70,17203,1107],{"class":200},[70,17205,5031],{"class":196},[70,17207,240],{"class":200},[70,17209,1780],{"class":275},[70,17211,635],{"class":76},[70,17213,279],{"class":200},[70,17215,4601],{"class":275},[70,17217,635],{"class":76},[70,17219,279],{"class":200},[70,17221,1549],{"class":275},[70,17223,635],{"class":76},[70,17225,5519],{"class":200},[70,17227,17228,17230,17232,17234,17236],{"class":72,"line":5606},[70,17229,5525],{"class":200},[70,17231,4715],{"class":196},[70,17233,240],{"class":200},[70,17235,5532],{"class":80},[70,17237,5535],{"class":200},[70,17239,17240],{"class":72,"line":5612},[70,17241,184],{"emptyLinePlaceholder":183},[70,17243,17244,17246,17248,17250,17252,17254],{"class":72,"line":5618},[70,17245,5546],{"class":196},[70,17247,5549],{"class":200},[70,17249,424],{"class":275},[70,17251,279],{"class":200},[70,17253,5556],{"class":275},[70,17255,427],{"class":200},[70,17257,17258],{"class":72,"line":5624},[70,17259,1491],{"class":200},[70,17261,17262],{"class":72,"line":5630},[70,17263,184],{"emptyLinePlaceholder":183},[70,17265,17266],{"class":72,"line":5636},[70,17267,17268],{"class":224},"        \u002F\u002F 点光源立方体绘制（手电筒不需要显示光源立方体，已注释）\n",[70,17270,17271],{"class":72,"line":5641},[70,17272,5580],{"class":224},[70,17274,17275],{"class":72,"line":5647},[70,17276,5586],{"class":224},[70,17278,17279],{"class":72,"line":5653},[70,17280,5592],{"class":224},[70,17282,17283],{"class":72,"line":5659},[70,17284,5598],{"class":224},[70,17286,17287],{"class":72,"line":5664},[70,17288,1450],{"class":224},[70,17290,17291],{"class":72,"line":5670},[70,17292,5609],{"class":224},[70,17294,17295],{"class":72,"line":5680},[70,17296,5615],{"class":224},[70,17298,17299],{"class":72,"line":5685},[70,17300,5621],{"class":224},[70,17302,17303],{"class":72,"line":5691},[70,17304,5627],{"class":224},[70,17306,17307],{"class":72,"line":5699},[70,17308,5633],{"class":224},[70,17310,17311],{"class":72,"line":5704},[70,17312,1450],{"class":224},[70,17314,17315],{"class":72,"line":5709},[70,17316,5644],{"class":224},[70,17318,17319],{"class":72,"line":5715},[70,17320,5650],{"class":224},[70,17322,17323],{"class":72,"line":5725},[70,17324,5656],{"class":224},[70,17326,17327],{"class":72,"line":5730},[70,17328,1450],{"class":200},[70,17330,17331],{"class":72,"line":5736},[70,17332,5667],{"class":224},[70,17334,17335,17337,17339],{"class":72,"line":5752},[70,17336,801],{"class":200},[70,17338,5675],{"class":196},[70,17340,1053],{"class":200},[70,17342,17343],{"class":72,"line":5767},[70,17344,184],{"emptyLinePlaceholder":183},[70,17346,17347],{"class":72,"line":5783},[70,17348,5688],{"class":224},[70,17350,17351,17353],{"class":72,"line":5800},[70,17352,5694],{"class":196},[70,17354,770],{"class":200},[70,17356,17357],{"class":72,"line":5808},[70,17358,373],{"class":200},[70,17360,17361],{"class":72,"line":5817},[70,17362,184],{"emptyLinePlaceholder":183},[70,17364,17365],{"class":72,"line":11138},[70,17366,5712],{"class":224},[70,17368,17369,17371,17373],{"class":72,"line":11143},[70,17370,1342],{"class":200},[70,17372,5720],{"class":196},[70,17374,1053],{"class":200},[70,17376,17377],{"class":72,"line":11148},[70,17378,184],{"emptyLinePlaceholder":183},[70,17380,17381],{"class":72,"line":11160},[70,17382,5733],{"class":224},[70,17384,17385,17387,17389,17391,17393,17395],{"class":72,"line":11166},[70,17386,5739],{"class":196},[70,17388,240],{"class":200},[70,17390,276],{"class":275},[70,17392,279],{"class":200},[70,17394,282],{"class":76},[70,17396,3821],{"class":200},[70,17398,17399,17401,17403,17405,17407,17409],{"class":72,"line":11171},[70,17400,5739],{"class":196},[70,17402,240],{"class":200},[70,17404,276],{"class":275},[70,17406,279],{"class":200},[70,17408,282],{"class":76},[70,17410,4316],{"class":200},[70,17412,17413,17415,17417,17419,17421,17423],{"class":72,"line":11183},[70,17414,5770],{"class":196},[70,17416,240],{"class":200},[70,17418,276],{"class":275},[70,17420,279],{"class":200},[70,17422,282],{"class":76},[70,17424,3871],{"class":200},[70,17426,17427,17429,17431,17433,17435,17437],{"class":72,"line":11192},[70,17428,5786],{"class":196},[70,17430,240],{"class":200},[70,17432,276],{"class":275},[70,17434,279],{"class":200},[70,17436,282],{"class":76},[70,17438,5797],{"class":200},[70,17440,17441,17443],{"class":72,"line":11200},[70,17442,5803],{"class":196},[70,17444,1053],{"class":200},[70,17446,17447,17449,17451],{"class":72,"line":11208},[70,17448,524],{"class":76},[70,17450,4254],{"class":275},[70,17452,201],{"class":200},[70,17454,17455],{"class":72,"line":11213},[70,17456,532],{"class":200},[70,17458,17459],{"class":72,"line":11218},[70,17460,184],{"emptyLinePlaceholder":183},[70,17462,17463,17465,17467],{"class":72,"line":11228},[70,17464,11151],{"class":200},[70,17466,11154],{"class":275},[70,17468,11157],{"class":200},[70,17470,17471],{"class":72,"line":11236},[70,17472,11163],{"class":200},[70,17474,17475],{"class":72,"line":11244},[70,17476,184],{"emptyLinePlaceholder":183},[70,17478,17479,17481,17483],{"class":72,"line":11251},[70,17480,11174],{"class":76},[70,17482,11177],{"class":196},[70,17484,11180],{"class":200},[70,17486,17487,17489],{"class":72,"line":11258},[70,17488,11186],{"class":196},[70,17490,11189],{"class":200},[70,17492,17493,17495],{"class":72,"line":11263},[70,17494,4395],{"class":196},[70,17496,11197],{"class":200},[70,17498,17499,17501],{"class":72,"line":11271},[70,17500,1710],{"class":76},[70,17502,11205],{"class":200},[70,17504,17505],{"class":72,"line":11279},[70,17506,3783],{"class":200},[70,17508,17509],{"class":72,"line":11287},[70,17510,184],{"emptyLinePlaceholder":183},[70,17512,17513,17515,17517],{"class":72,"line":11292},[70,17514,11174],{"class":76},[70,17516,11223],{"class":196},[70,17518,11180],{"class":200},[70,17520,17521,17523],{"class":72,"line":11297},[70,17522,4395],{"class":196},[70,17524,11233],{"class":200},[70,17526,17527,17529],{"class":72,"line":11303},[70,17528,4395],{"class":196},[70,17530,17531],{"class":200}," direction;\n",[70,17533,17534,17536],{"class":72,"line":11309},[70,17535,1710],{"class":76},[70,17537,11841],{"class":200},[70,17539,17540,17542],{"class":72,"line":11315},[70,17541,1710],{"class":76},[70,17543,17544],{"class":200}," outerCutOff;\n",[70,17546,17547,17549],{"class":72,"line":11321},[70,17548,4395],{"class":196},[70,17550,11241],{"class":200},[70,17552,17553,17555],{"class":72,"line":11327},[70,17554,4395],{"class":196},[70,17556,11189],{"class":200},[70,17558,17559,17561],{"class":72,"line":11333},[70,17560,4395],{"class":196},[70,17562,11197],{"class":200},[70,17564,17565],{"class":72,"line":11338},[70,17566,184],{"emptyLinePlaceholder":183},[70,17568,17569,17571],{"class":72,"line":11348},[70,17570,1710],{"class":76},[70,17572,11268],{"class":200},[70,17574,17575,17577],{"class":72,"line":11353},[70,17576,1710],{"class":76},[70,17578,11276],{"class":200},[70,17580,17581,17583],{"class":72,"line":11359},[70,17582,1710],{"class":76},[70,17584,11284],{"class":200},[70,17586,17587],{"class":72,"line":11380},[70,17588,3783],{"class":200},[70,17590,17591],{"class":72,"line":11401},[70,17592,184],{"emptyLinePlaceholder":183},[70,17594,17595],{"class":72,"line":11435},[70,17596,11300],{"class":200},[70,17598,17599],{"class":72,"line":11451},[70,17600,11306],{"class":200},[70,17602,17603],{"class":72,"line":11457},[70,17604,11312],{"class":200},[70,17606,17607],{"class":72,"line":11480},[70,17608,11318],{"class":200},[70,17610,17611],{"class":72,"line":11485},[70,17612,11324],{"class":200},[70,17614,17615],{"class":72,"line":11491},[70,17616,11330],{"class":200},[70,17618,17619],{"class":72,"line":11507},[70,17620,184],{"emptyLinePlaceholder":183},[70,17622,17623,17625,17627],{"class":72,"line":11525},[70,17624,549],{"class":76},[70,17626,960],{"class":196},[70,17628,11345],{"class":200},[70,17630,17631],{"class":72,"line":11550},[70,17632,11180],{"class":200},[70,17634,17635],{"class":72,"line":11577},[70,17636,11356],{"class":224},[70,17638,17639,17641,17643,17645,17647,17649,17651],{"class":72,"line":11582},[70,17640,4395],{"class":196},[70,17642,11364],{"class":200},[70,17644,309],{"class":76},[70,17646,11369],{"class":196},[70,17648,240],{"class":200},[70,17650,11374],{"class":196},[70,17652,11377],{"class":200},[70,17654,17655],{"class":72,"line":11588},[70,17656,291],{"class":200},[70,17658,17659],{"class":72,"line":11607},[70,17660,17661],{"class":224},"    \u002F\u002F 计算距离衰减\n",[70,17663,17664,17666,17668,17670,17672,17674,17676],{"class":72,"line":11627},[70,17665,1710],{"class":76},[70,17667,11427],{"class":200},[70,17669,309],{"class":76},[70,17671,11390],{"class":196},[70,17673,11393],{"class":200},[70,17675,1751],{"class":76},[70,17677,11398],{"class":200},[70,17679,17680,17682,17684,17686,17688,17690,17692,17694,17696,17698,17700,17702],{"class":72,"line":11657},[70,17681,1710],{"class":76},[70,17683,11406],{"class":200},[70,17685,309],{"class":76},[70,17687,11411],{"class":275},[70,17689,1009],{"class":76},[70,17691,11416],{"class":200},[70,17693,11419],{"class":76},[70,17695,11422],{"class":200},[70,17697,560],{"class":76},[70,17699,11427],{"class":200},[70,17701,11419],{"class":76},[70,17703,11432],{"class":200},[70,17705,17706,17709,17711,17713,17715],{"class":72,"line":11684},[70,17707,17708],{"class":200},"                                light.quadratic ",[70,17710,560],{"class":76},[70,17712,11443],{"class":200},[70,17714,560],{"class":76},[70,17716,11448],{"class":200},[70,17718,17719],{"class":72,"line":11689},[70,17720,291],{"class":200},[70,17722,17723],{"class":72,"line":11695},[70,17724,17725],{"class":224},"    \u002F\u002F 环境光（先计算，因为无论是否在聚光灯范围内都需要）\n",[70,17727,17728,17730,17732,17734,17736,17738],{"class":72,"line":11715},[70,17729,4395],{"class":196},[70,17731,11462],{"class":200},[70,17733,309],{"class":76},[70,17735,11472],{"class":200},[70,17737,560],{"class":76},[70,17739,11477],{"class":200},[70,17741,17742],{"class":72,"line":11733},[70,17743,291],{"class":200},[70,17745,17747],{"class":72,"line":17746},406,[70,17748,17749],{"class":224},"    \u002F\u002F 计算聚光灯效果（手电筒）\n",[70,17751,17753,17755,17757,17759,17761,17764,17766,17769],{"class":72,"line":17752},407,[70,17754,4395],{"class":196},[70,17756,11512],{"class":200},[70,17758,309],{"class":76},[70,17760,11501],{"class":196},[70,17762,17763],{"class":200},"(FragPos ",[70,17765,1751],{"class":76},[70,17767,17768],{"class":200}," light.position);",[70,17770,17771],{"class":224}," \u002F\u002F 从光源指向片段的方向\n",[70,17773,17775,17777,17780,17782,17784,17787],{"class":72,"line":17774},408,[70,17776,4395],{"class":196},[70,17778,17779],{"class":200}," spotDir ",[70,17781,309],{"class":76},[70,17783,11501],{"class":196},[70,17785,17786],{"class":200},"(light.direction);",[70,17788,17789],{"class":224}," \u002F\u002F 手电筒的朝向方向（相机朝向）\n",[70,17791,17793,17795,17797,17799,17801,17804],{"class":72,"line":17792},409,[70,17794,1710],{"class":76},[70,17796,11938],{"class":200},[70,17798,309],{"class":76},[70,17800,11943],{"class":196},[70,17802,17803],{"class":200},"(lightDir, spotDir);",[70,17805,17806],{"class":224}," \u002F\u002F 计算角度（点积），如果 theta > cutOff 说明在聚光灯范围内\n",[70,17808,17810],{"class":72,"line":17809},410,[70,17811,291],{"class":200},[70,17813,17815],{"class":72,"line":17814},411,[70,17816,17817],{"class":224},"    \u002F\u002F 计算聚光灯强度（使用 clamp 方法，无需 if-else）\n",[70,17819,17821,17823,17825,17827,17829,17831,17833,17835,17837,17840,17842,17845,17847,17849,17851],{"class":72,"line":17820},412,[70,17822,1710],{"class":76},[70,17824,12279],{"class":200},[70,17826,309],{"class":76},[70,17828,12284],{"class":196},[70,17830,12287],{"class":200},[70,17832,1751],{"class":76},[70,17834,12292],{"class":200},[70,17836,12295],{"class":76},[70,17838,17839],{"class":200}," (light.cutOff ",[70,17841,1751],{"class":76},[70,17843,17844],{"class":200}," light.outerCutOff), ",[70,17846,1767],{"class":275},[70,17848,279],{"class":200},[70,17850,1780],{"class":275},[70,17852,427],{"class":200},[70,17854,17856],{"class":72,"line":17855},413,[70,17857,291],{"class":200},[70,17859,17861],{"class":72,"line":17860},414,[70,17862,17863],{"class":224},"    \u002F\u002F 计算漫反射和镜面反射（无论强度如何都计算）\n",[70,17865,17867,17869,17871,17873,17875],{"class":72,"line":17866},415,[70,17868,4395],{"class":196},[70,17870,11496],{"class":200},[70,17872,309],{"class":76},[70,17874,11501],{"class":196},[70,17876,11504],{"class":200},[70,17878,17880,17882,17884,17886,17888,17890,17892,17895,17897,17900,17902,17904],{"class":72,"line":17879},416,[70,17881,1710],{"class":76},[70,17883,11530],{"class":200},[70,17885,309],{"class":76},[70,17887,11535],{"class":196},[70,17889,240],{"class":200},[70,17891,11540],{"class":196},[70,17893,17894],{"class":200},"(norm, ",[70,17896,1751],{"class":76},[70,17898,17899],{"class":200},"lightDir), ",[70,17901,1767],{"class":275},[70,17903,4014],{"class":200},[70,17905,17906],{"class":224}," \u002F\u002F -lightDir 是从片段指向光源\n",[70,17908,17910,17912,17914,17916,17918,17920,17922,17924],{"class":72,"line":17909},417,[70,17911,4395],{"class":196},[70,17913,11555],{"class":200},[70,17915,309],{"class":76},[70,17917,11564],{"class":200},[70,17919,560],{"class":76},[70,17921,11569],{"class":200},[70,17923,560],{"class":76},[70,17925,11574],{"class":200},[70,17927,17929],{"class":72,"line":17928},418,[70,17930,291],{"class":200},[70,17932,17934],{"class":72,"line":17933},419,[70,17935,11585],{"class":224},[70,17937,17939,17941,17943,17945,17947,17949,17951],{"class":72,"line":17938},420,[70,17940,4395],{"class":196},[70,17942,11593],{"class":200},[70,17944,309],{"class":76},[70,17946,11501],{"class":196},[70,17948,11600],{"class":200},[70,17950,1751],{"class":76},[70,17952,11398],{"class":200},[70,17954,17956,17958,17960,17962,17964,17967],{"class":72,"line":17955},421,[70,17957,4395],{"class":196},[70,17959,11612],{"class":200},[70,17961,309],{"class":76},[70,17963,11617],{"class":196},[70,17965,17966],{"class":200},"(lightDir, norm);",[70,17968,17969],{"class":224}," \u002F\u002F lightDir 是从光源指向片段（入射方向）\n",[70,17971,17973,17975,17977,17979,17981,17983,17985,17987,17989,17991,17993],{"class":72,"line":17972},422,[70,17974,1710],{"class":76},[70,17976,11632],{"class":200},[70,17978,309],{"class":76},[70,17980,11637],{"class":196},[70,17982,240],{"class":200},[70,17984,11642],{"class":196},[70,17986,240],{"class":200},[70,17988,11540],{"class":196},[70,17990,11649],{"class":200},[70,17992,1767],{"class":275},[70,17994,11654],{"class":200},[70,17996,17998,18000,18002,18004,18006,18008,18010,18012],{"class":72,"line":17997},423,[70,17999,4395],{"class":196},[70,18001,11662],{"class":200},[70,18003,309],{"class":76},[70,18005,11671],{"class":200},[70,18007,560],{"class":76},[70,18009,11676],{"class":200},[70,18011,560],{"class":76},[70,18013,11681],{"class":200},[70,18015,18017],{"class":72,"line":18016},424,[70,18018,291],{"class":200},[70,18020,18022],{"class":72,"line":18021},425,[70,18023,18024],{"class":224},"    \u002F\u002F 应用衰减和聚光灯强度\n",[70,18026,18028,18031,18033,18035,18037],{"class":72,"line":18027},426,[70,18029,18030],{"class":200},"    diffuse ",[70,18032,12325],{"class":76},[70,18034,11406],{"class":200},[70,18036,560],{"class":76},[70,18038,12328],{"class":200},[70,18040,18042,18045,18047,18049,18051],{"class":72,"line":18041},427,[70,18043,18044],{"class":200},"    specular ",[70,18046,12325],{"class":76},[70,18048,11406],{"class":200},[70,18050,560],{"class":76},[70,18052,12328],{"class":200},[70,18054,18056],{"class":72,"line":18055},428,[70,18057,291],{"class":200},[70,18059,18061],{"class":72,"line":18060},429,[70,18062,11692],{"class":224},[70,18064,18066,18068,18070,18072,18074,18076,18078,18080],{"class":72,"line":18065},430,[70,18067,4395],{"class":196},[70,18069,11700],{"class":200},[70,18071,309],{"class":76},[70,18073,11462],{"class":200},[70,18075,11419],{"class":76},[70,18077,11555],{"class":200},[70,18079,11419],{"class":76},[70,18081,11197],{"class":200},[70,18083,18085,18087,18089,18091,18093,18095],{"class":72,"line":18084},431,[70,18086,11718],{"class":200},[70,18088,309],{"class":76},[70,18090,11723],{"class":196},[70,18092,11726],{"class":200},[70,18094,1780],{"class":275},[70,18096,427],{"class":200},[70,18098,18100],{"class":72,"line":18099},432,[70,18101,532],{"class":200},[18103,18104,18105],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":65,"searchDepth":84,"depth":84,"links":18107},[18108,18109,18110],{"id":5874,"depth":92,"text":5874},{"id":11793,"depth":84,"text":11793},{"id":12029,"depth":84,"text":12030},"当一个光源处于很远的地方时，来自光源的每条光线就会近似于互相平行。不论物体和\u002F或者观察者的位置，看起来好像所有的光都来自于同一个方向。当我们使用一个假设光源处于无限远处的模型时，它就被称为定向光，因为它的所有光线都有着相同的方向，它与光源的位置是没有关系的。","md",{},"\u002Fgraphy\u002Fopengel\u002F光源和投光物",{"title":5,"description":18111},"graphy\u002Fopengel\u002F光源和投光物","wtAPxTIvebZcjFgJyxkeGzcmDIglNSyzawQelglfppQ",1792338202568]