[{"data":1,"prerenderedAt":11102},["ShallowReactive",2],{"content-\u002Fwiki\u002Frobotics\u002Fmujoco\u002Fmujoco-28267cc":3,"wiki-article-navigation":4083},{"id":4,"title":5,"body":6,"category":4071,"date":4072,"description":4073,"draft":4074,"extension":4075,"featured":4074,"meta":4076,"navigation":227,"path":4077,"seo":4078,"stem":4079,"tags":4080,"type":4081,"__hash__":4082},"content\u002Fwiki\u002Frobotics\u002Fmujoco\u002Fmujoco-28267cc.md","Mujoco学习记录",{"type":7,"value":8,"toc":4050},"minimark",[9,20,28,36,41,48,139,144,158,418,421,471,479,486,492,571,574,592,596,599,680,683,768,789,793,797,816,851,855,859,864,867,893,897,1095,1100,2701,2706,3431,3435,3459,3717,3722,3812,3821,3973,3976,3980,3983,3991,4046],[10,11,12,13],"p",{},"📖参考资料：\nMujoco官网：",[14,15,19],"a",{"href":16,"rel":17},"https:\u002F\u002Fmujoco.readthedocs.io\u002Fen\u002Fstable\u002Foverview.html",[18],"nofollow","MuJoCo 官方文档",[10,21,22,23],{},"学习连接: ",[14,24,27],{"href":25,"rel":26},"https:\u002F\u002Fgithub.com\u002FAlbusgive\u002Fmujoco_learning\u002Ftree\u002Fmain",[18],"MuJoCo 学习参考",[10,29,30,31],{},"学习视频链接",[14,32,35],{"href":33,"rel":34},"https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1wMdHYVEnx?vd_source=6bb9dc8d77886fc937032b139ad7debc",[18],"【教程】2025新版mujoco建模与仿真",[37,38,40],"h2",{"id":39},"一环境安装","一、环境安装",[10,42,43,47],{},[44,45,46],"strong",{},"MuJoCo 常见有三种安装方式，按使用场景选择即可","：",[49,50,51,70],"table",{},[52,53,54],"thead",{},[55,56,57,61,64,67],"tr",{},[58,59,60],"th",{},"安装方式",[58,62,63],{},"优点",[58,65,66],{},"缺点",[58,68,69],{},"适合场景",[71,72,73,97,115,129],"tbody",{},[55,74,75,79,91,94],{},[76,77,78],"td",{},"官方 Release 二进制",[76,80,81,82,86,87,90],{},"安装简单，包含 ",[83,84,85],"code",{},"simulate","、",[83,88,89],{},"compile"," 等工具，适合 C\u002FC++ 开发",[76,92,93],{},"需要手动配置环境变量；平台和架构必须匹配",[76,95,96],{},"使用官方示例、C\u002FC++、命令行工具",[55,98,99,106,109,112],{},[76,100,101,102,105],{},"Python ",[83,103,104],{},"pip"," 包",[76,107,108],{},"安装最快，自动携带 MuJoCo 动态库；便于与 Gymnasium、强化学习库结合",[76,110,111],{},"不提供完整的源码和桌面工具；主要面向 Python",[76,113,114],{},"Python 仿真、强化学习、快速验证",[55,116,117,120,123,126],{},[76,118,119],{},"源码编译",[76,121,122],{},"可修改源码、启用调试和自定义编译选项",[76,124,125],{},"编译时间长，依赖多，维护成本高",[76,127,128],{},"修改 MuJoCo 内核、底层开发、贡献代码",[55,130,131,133,135,137],{},[76,132],{},[76,134],{},[76,136],{},[76,138],{},[140,141,143],"h3",{"id":142},"_11-下载官方release版本","1.1 下载官方Release版本",[10,145,146,147,152,153],{},"MuJoCo 的官方二进制 Release 可从 ",[14,148,151],{"href":149,"rel":150},"https:\u002F\u002Fgithub.com\u002Fgoogle-deepmind\u002Fmujoco\u002Freleases",[18],"GitHub Releases"," 下载。以下以 Linux x86_64 为例（版本号请替换为 Release 页面中的最新版本）：\n",[154,155],"img",{"alt":156,"src":157},"633","\u002Ffongtszho.web\u002Fwiki-assets\u002Fpictures-1786633819387106425.png",[159,160,165],"pre",{"className":161,"code":162,"language":163,"meta":164,"style":164},"language-bash shiki shiki-themes github-light github-dark","# Ubuntu\u002FDebian 依赖\nsudo apt update\nsudo apt install -y libglfw3 libglew2.2 libosmesa6 libxrandr2 libxinerama1 libxcursor1\n\n# Fedora 依赖（与上面的 apt 命令二选一）\nsudo dnf install -y glfw glew libglvnd-glx mesa-libOSMesa libXrandr libXinerama libXcursor\n\n# 下载并解压官方 Release\ncd ~\u002FApplications\nwget https:\u002F\u002Fgithub.com\u002Fgoogle-deepmind\u002Fmujoco\u002Freleases\u002Fdownload\u002F3.7.0\u002Fmujoco-3.7.0-linux-x86_64.tar.gz\ntar -xzf mujoco-3.7.0-linux-x86_64.tar.gz\n\n# 配置环境变量（也可将下面三行写入 ~\u002F.bashrc）\nexport MUJOCO_HOME=\"$HOME\u002FApplications\u002Fmujoco-3.7.0\"\nexport PATH=\"$MUJOCO_HOME\u002Fbin:$PATH\"\nexport LD_LIBRARY_PATH=\"$MUJOCO_HOME\u002Fbin:${LD_LIBRARY_PATH:-}\"\n\n# 4. 验证安装：查看版本并启动官方模拟器\ncompile -h\nsimulate\n","bash","",[83,166,167,176,190,222,229,235,268,273,279,288,297,309,314,320,343,367,393,398,404,412],{"__ignoreMap":164},[168,169,172],"span",{"class":170,"line":171},"line",1,[168,173,175],{"class":174},"sJ8bj","# Ubuntu\u002FDebian 依赖\n",[168,177,179,183,187],{"class":170,"line":178},2,[168,180,182],{"class":181},"sScJk","sudo",[168,184,186],{"class":185},"sZZnC"," apt",[168,188,189],{"class":185}," update\n",[168,191,193,195,197,200,204,207,210,213,216,219],{"class":170,"line":192},3,[168,194,182],{"class":181},[168,196,186],{"class":185},[168,198,199],{"class":185}," install",[168,201,203],{"class":202},"sj4cs"," -y",[168,205,206],{"class":185}," libglfw3",[168,208,209],{"class":185}," libglew2.2",[168,211,212],{"class":185}," libosmesa6",[168,214,215],{"class":185}," libxrandr2",[168,217,218],{"class":185}," libxinerama1",[168,220,221],{"class":185}," libxcursor1\n",[168,223,225],{"class":170,"line":224},4,[168,226,228],{"emptyLinePlaceholder":227},true,"\n",[168,230,232],{"class":170,"line":231},5,[168,233,234],{"class":174},"# Fedora 依赖（与上面的 apt 命令二选一）\n",[168,236,238,240,243,245,247,250,253,256,259,262,265],{"class":170,"line":237},6,[168,239,182],{"class":181},[168,241,242],{"class":185}," dnf",[168,244,199],{"class":185},[168,246,203],{"class":202},[168,248,249],{"class":185}," glfw",[168,251,252],{"class":185}," glew",[168,254,255],{"class":185}," libglvnd-glx",[168,257,258],{"class":185}," mesa-libOSMesa",[168,260,261],{"class":185}," libXrandr",[168,263,264],{"class":185}," libXinerama",[168,266,267],{"class":185}," libXcursor\n",[168,269,271],{"class":170,"line":270},7,[168,272,228],{"emptyLinePlaceholder":227},[168,274,276],{"class":170,"line":275},8,[168,277,278],{"class":174},"# 下载并解压官方 Release\n",[168,280,282,285],{"class":170,"line":281},9,[168,283,284],{"class":202},"cd",[168,286,287],{"class":185}," ~\u002FApplications\n",[168,289,291,294],{"class":170,"line":290},10,[168,292,293],{"class":181},"wget",[168,295,296],{"class":185}," https:\u002F\u002Fgithub.com\u002Fgoogle-deepmind\u002Fmujoco\u002Freleases\u002Fdownload\u002F3.7.0\u002Fmujoco-3.7.0-linux-x86_64.tar.gz\n",[168,298,300,303,306],{"class":170,"line":299},11,[168,301,302],{"class":181},"tar",[168,304,305],{"class":202}," -xzf",[168,307,308],{"class":185}," mujoco-3.7.0-linux-x86_64.tar.gz\n",[168,310,312],{"class":170,"line":311},12,[168,313,228],{"emptyLinePlaceholder":227},[168,315,317],{"class":170,"line":316},13,[168,318,319],{"class":174},"# 配置环境变量（也可将下面三行写入 ~\u002F.bashrc）\n",[168,321,323,327,331,334,337,340],{"class":170,"line":322},14,[168,324,326],{"class":325},"szBVR","export",[168,328,330],{"class":329},"sVt8B"," MUJOCO_HOME",[168,332,333],{"class":325},"=",[168,335,336],{"class":185},"\"",[168,338,339],{"class":329},"$HOME",[168,341,342],{"class":185},"\u002FApplications\u002Fmujoco-3.7.0\"\n",[168,344,346,348,351,353,355,358,361,364],{"class":170,"line":345},15,[168,347,326],{"class":325},[168,349,350],{"class":329}," PATH",[168,352,333],{"class":325},[168,354,336],{"class":185},[168,356,357],{"class":329},"$MUJOCO_HOME",[168,359,360],{"class":185},"\u002Fbin:",[168,362,363],{"class":329},"$PATH",[168,365,366],{"class":185},"\"\n",[168,368,370,372,375,377,379,381,384,387,390],{"class":170,"line":369},16,[168,371,326],{"class":325},[168,373,374],{"class":329}," LD_LIBRARY_PATH",[168,376,333],{"class":325},[168,378,336],{"class":185},[168,380,357],{"class":329},[168,382,383],{"class":185},"\u002Fbin:${",[168,385,386],{"class":329},"LD_LIBRARY_PATH",[168,388,389],{"class":325},":-",[168,391,392],{"class":185},"}\"\n",[168,394,396],{"class":170,"line":395},17,[168,397,228],{"emptyLinePlaceholder":227},[168,399,401],{"class":170,"line":400},18,[168,402,403],{"class":174},"# 4. 验证安装：查看版本并启动官方模拟器\n",[168,405,407,409],{"class":170,"line":406},19,[168,408,89],{"class":181},[168,410,411],{"class":202}," -h\n",[168,413,415],{"class":170,"line":414},20,[168,416,417],{"class":181},"simulate\n",[10,419,420],{},"如果希望每次打开终端都自动生效，将环境变量追加到 shell 配置文件：",[159,422,424],{"className":161,"code":423,"language":163,"meta":164,"style":164},"cat >> ~\u002F.bashrc \u003C\u003C'EOF'\nexport MUJOCO_HOME=\"$HOME\u002FApplications\u002Fmujoco-3.7.0\"\nexport PATH=\"$MUJOCO_HOME\u002Fbin:$PATH\"\nexport LD_LIBRARY_PATH=\"$MUJOCO_HOME\u002Fbin:${LD_LIBRARY_PATH:-}\"\nEOF\nsource ~\u002F.bashrc\n",[83,425,426,443,448,453,458,463],{"__ignoreMap":164},[168,427,428,431,434,437,440],{"class":170,"line":171},[168,429,430],{"class":181},"cat",[168,432,433],{"class":325}," >>",[168,435,436],{"class":185}," ~\u002F.bashrc",[168,438,439],{"class":325}," \u003C\u003C",[168,441,442],{"class":185},"'EOF'\n",[168,444,445],{"class":170,"line":178},[168,446,447],{"class":185},"export MUJOCO_HOME=\"$HOME\u002FApplications\u002Fmujoco-3.7.0\"\n",[168,449,450],{"class":170,"line":192},[168,451,452],{"class":185},"export PATH=\"$MUJOCO_HOME\u002Fbin:$PATH\"\n",[168,454,455],{"class":170,"line":224},[168,456,457],{"class":185},"export LD_LIBRARY_PATH=\"$MUJOCO_HOME\u002Fbin:${LD_LIBRARY_PATH:-}\"\n",[168,459,460],{"class":170,"line":231},[168,461,462],{"class":185},"EOF\n",[168,464,465,468],{"class":170,"line":237},[168,466,467],{"class":202},"source",[168,469,470],{"class":185}," ~\u002F.bashrc\n",[10,472,473,474,86,476,478],{},"说明：Release 压缩包已经包含 MuJoCo 的运行库和 ",[83,475,85],{},[83,477,89],{}," 等工具，不需要再编译源码。若使用 ARM64、macOS 或 Windows，请在 Releases 页面选择对应平台的压缩包，并相应调整解压目录和动态库环境变量。",[140,480,482,483,485],{"id":481},"_12-使用-python-pip-安装","1.2 使用 Python ",[83,484,104],{}," 安装",[10,487,488,489,47],{},"MuJoCo 官方 Python 绑定会自动下载并管理对应的 MuJoCo 二进制库，通常不需要手动设置 ",[83,490,491],{},"MUJOCO_HOME",[159,493,495],{"className":161,"code":494,"language":163,"meta":164,"style":164},"python3 -m venv .venv\nsource .venv\u002Fbin\u002Factivate                 # Fedora\u002FUbuntu\npython -m pip install --upgrade pip\npython -m pip install mujoco\n\n# 验证\npython -c \"import mujoco; print(mujoco.__version__)\"\n",[83,496,497,511,521,539,552,556,561],{"__ignoreMap":164},[168,498,499,502,505,508],{"class":170,"line":171},[168,500,501],{"class":181},"python3",[168,503,504],{"class":202}," -m",[168,506,507],{"class":185}," venv",[168,509,510],{"class":185}," .venv\n",[168,512,513,515,518],{"class":170,"line":178},[168,514,467],{"class":202},[168,516,517],{"class":185}," .venv\u002Fbin\u002Factivate",[168,519,520],{"class":174},"                 # Fedora\u002FUbuntu\n",[168,522,523,526,528,531,533,536],{"class":170,"line":192},[168,524,525],{"class":181},"python",[168,527,504],{"class":202},[168,529,530],{"class":185}," pip",[168,532,199],{"class":185},[168,534,535],{"class":202}," --upgrade",[168,537,538],{"class":185}," pip\n",[168,540,541,543,545,547,549],{"class":170,"line":224},[168,542,525],{"class":181},[168,544,504],{"class":202},[168,546,530],{"class":185},[168,548,199],{"class":185},[168,550,551],{"class":185}," mujoco\n",[168,553,554],{"class":170,"line":231},[168,555,228],{"emptyLinePlaceholder":227},[168,557,558],{"class":170,"line":237},[168,559,560],{"class":174},"# 验证\n",[168,562,563,565,568],{"class":170,"line":270},[168,564,525],{"class":181},[168,566,567],{"class":202}," -c",[168,569,570],{"class":185}," \"import mujoco; print(mujoco.__version__)\"\n",[10,572,573],{},"如果使用 Gymnasium 等强化学习环境，可一并安装：",[159,575,577],{"className":161,"code":576,"language":163,"meta":164,"style":164},"python -m pip install \"gymnasium[mujoco]\"\n",[83,578,579],{"__ignoreMap":164},[168,580,581,583,585,587,589],{"class":170,"line":171},[168,582,525],{"class":181},[168,584,504],{"class":202},[168,586,530],{"class":185},[168,588,199],{"class":185},[168,590,591],{"class":185}," \"gymnasium[mujoco]\"\n",[140,593,595],{"id":594},"_13-从源码编译","1.3 从源码编译",[10,597,598],{},"源码编译适合需要修改 MuJoCo 内核或进行底层调试的场景。先安装 Git、CMake、C\u002FC++ 编译器及图形依赖：",[159,600,602],{"className":161,"code":601,"language":163,"meta":164,"style":164},"# Ubuntu\u002FDebian\nsudo apt update\nsudo apt install -y git cmake build-essential libglfw3-dev libglew-dev libosmesa6-dev\n\n# Fedora\nsudo dnf install -y git cmake gcc-c++ glfw-devel glew-devel mesa-libOSMesa-devel\n",[83,603,604,609,617,645,649,654],{"__ignoreMap":164},[168,605,606],{"class":170,"line":171},[168,607,608],{"class":174},"# Ubuntu\u002FDebian\n",[168,610,611,613,615],{"class":170,"line":178},[168,612,182],{"class":181},[168,614,186],{"class":185},[168,616,189],{"class":185},[168,618,619,621,623,625,627,630,633,636,639,642],{"class":170,"line":192},[168,620,182],{"class":181},[168,622,186],{"class":185},[168,624,199],{"class":185},[168,626,203],{"class":202},[168,628,629],{"class":185}," git",[168,631,632],{"class":185}," cmake",[168,634,635],{"class":185}," build-essential",[168,637,638],{"class":185}," libglfw3-dev",[168,640,641],{"class":185}," libglew-dev",[168,643,644],{"class":185}," libosmesa6-dev\n",[168,646,647],{"class":170,"line":224},[168,648,228],{"emptyLinePlaceholder":227},[168,650,651],{"class":170,"line":231},[168,652,653],{"class":174},"# Fedora\n",[168,655,656,658,660,662,664,666,668,671,674,677],{"class":170,"line":237},[168,657,182],{"class":181},[168,659,242],{"class":185},[168,661,199],{"class":185},[168,663,203],{"class":202},[168,665,629],{"class":185},[168,667,632],{"class":185},[168,669,670],{"class":185}," gcc-c++",[168,672,673],{"class":185}," glfw-devel",[168,675,676],{"class":185}," glew-devel",[168,678,679],{"class":185}," mesa-libOSMesa-devel\n",[10,681,682],{},"然后从官方仓库编译：",[159,684,686],{"className":161,"code":685,"language":163,"meta":164,"style":164},"git clone https:\u002F\u002Fgithub.com\u002Fgoogle-deepmind\u002Fmujoco.git\ncd mujoco\ncmake -S . -B build -DCMAKE_BUILD_TYPE=Release\ncmake --build build -j\"$(nproc)\"\n\n# 可选：运行测试\nctest --test-dir build --output-on-failure\n",[83,687,688,699,705,725,746,750,755],{"__ignoreMap":164},[168,689,690,693,696],{"class":170,"line":171},[168,691,692],{"class":181},"git",[168,694,695],{"class":185}," clone",[168,697,698],{"class":185}," https:\u002F\u002Fgithub.com\u002Fgoogle-deepmind\u002Fmujoco.git\n",[168,700,701,703],{"class":170,"line":178},[168,702,284],{"class":202},[168,704,551],{"class":185},[168,706,707,710,713,716,719,722],{"class":170,"line":192},[168,708,709],{"class":181},"cmake",[168,711,712],{"class":202}," -S",[168,714,715],{"class":185}," .",[168,717,718],{"class":202}," -B",[168,720,721],{"class":185}," build",[168,723,724],{"class":202}," -DCMAKE_BUILD_TYPE=Release\n",[168,726,727,729,732,734,737,740,743],{"class":170,"line":224},[168,728,709],{"class":181},[168,730,731],{"class":202}," --build",[168,733,721],{"class":185},[168,735,736],{"class":202}," -j",[168,738,739],{"class":185},"\"$(",[168,741,742],{"class":181},"nproc",[168,744,745],{"class":185},")\"\n",[168,747,748],{"class":170,"line":231},[168,749,228],{"emptyLinePlaceholder":227},[168,751,752],{"class":170,"line":237},[168,753,754],{"class":174},"# 可选：运行测试\n",[168,756,757,760,763,765],{"class":170,"line":270},[168,758,759],{"class":181},"ctest",[168,761,762],{"class":202}," --test-dir",[168,764,721],{"class":185},[168,766,767],{"class":202}," --output-on-failure\n",[10,769,770,771,774,775,86,778,781,782,785,786,788],{},"源码构建完成后，可将 ",[83,772,773],{},"build","（或安装后的 ",[83,776,777],{},"bin",[83,779,780],{},"lib"," 目录）加入 ",[83,783,784],{},"PATH"," 和 ",[83,787,386],{},"；具体目录以当前版本的 CMake 输出为准。",[37,790,792],{"id":791},"二搭建机器人模型","二、搭建机器人模型",[140,794,796],{"id":795},"_21-使用sw转urdfurdf转mjcf","2.1  使用SW转URDF,URDF转MJCF",[798,799,800,813],"ul",{},[801,802,803,804,809],"li",{},"SW ->URDF\n详情请见Vinvi战队ROS2教程",[14,805,808],{"href":806,"rel":807},"https:\u002F\u002Fwww.sdutvincirobot.top\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan#sw2urdf",[18],"ROS2机器人操作系统教程",[154,810],{"alt":811,"src":812},"730","\u002Ffongtszho.web\u002Fwiki-assets\u002Fpictures-pasted-image-20260721235907.png",[801,814,815],{},"URDF->MJCF",[159,817,819],{"className":161,"code":818,"language":163,"meta":164,"style":164},"#调用\n\u002Fmujoco安装路径\u002Fbin\u002Fcompile \u002Fyou_URDF_file_path  \u002FMJCF_path\n#示例\n\u002Fhome\u002Fxiaofang\u002FApplications\u002Fmujoco-3.7.0\u002Fbin\u002Fcompile \u002Fyou_URDF_file_path  \u002FMJCF_path\n",[83,820,821,826,837,842],{"__ignoreMap":164},[168,822,823],{"class":170,"line":171},[168,824,825],{"class":174},"#调用\n",[168,827,828,831,834],{"class":170,"line":178},[168,829,830],{"class":181},"\u002Fmujoco安装路径\u002Fbin\u002Fcompile",[168,832,833],{"class":185}," \u002Fyou_URDF_file_path",[168,835,836],{"class":185},"  \u002FMJCF_path\n",[168,838,839],{"class":170,"line":192},[168,840,841],{"class":174},"#示例\n",[168,843,844,847,849],{"class":170,"line":224},[168,845,846],{"class":181},"\u002Fhome\u002Fxiaofang\u002FApplications\u002Fmujoco-3.7.0\u002Fbin\u002Fcompile",[168,848,833],{"class":185},[168,850,836],{"class":185},[37,852,854],{"id":853},"三使用c开发","三、使用C++开发",[140,856,858],{"id":857},"main-运行方式","main 运行方式",[860,861,863],"h4",{"id":862},"_1-使用官方的-bassiccc","1. 使用官方的 bassic.cc",[10,865,866],{},"打开模型",[159,868,872],{"className":869,"code":870,"language":871,"meta":164,"style":164},"language-c++ shiki shiki-themes github-light github-dark","\u002F\u002F模型打开\nchar error[1000] = \"Could not load binary model\";\n\nm = mj_loadXML(\"..\u002Fmodels\u002Fcar.xml\", 0, error, 1000);\n","c++",[83,873,874,879,884,888],{"__ignoreMap":164},[168,875,876],{"class":170,"line":171},[168,877,878],{},"\u002F\u002F模型打开\n",[168,880,881],{"class":170,"line":178},[168,882,883],{},"char error[1000] = \"Could not load binary model\";\n",[168,885,886],{"class":170,"line":192},[168,887,228],{"emptyLinePlaceholder":227},[168,889,890],{"class":170,"line":224},[168,891,892],{},"m = mj_loadXML(\"..\u002Fmodels\u002Fcar.xml\", 0, error, 1000);\n",[860,894,896],{"id":895},"_2-使用ai改造的maincc-更加简洁只有基本的配置","2. 使用AI改造的main.cc （更加简洁，只有基本的配置）",[159,898,900],{"className":869,"code":899,"language":871,"meta":164,"style":164},"\u002F\u002Fmaoi.cc\n\n#include \"simulator\u002Fsimulator.h\"\n#include \"control\u002Fcontrol.h\"\n\nint main()\n\n{\n\n    Simulator sim;\n    \n    \u002F\u002F 1. 加载模型\n    if (!sim.load_model(\"..\u002Fmodels\u002Fmodel.xml\"))\n    \n    return 1;\n    \n    \u002F\u002F 2. 初始化窗口和可视化\n    if (!sim.init_visual(1200, 900, \"WheelLeg Demo\"))\n    \n    return 1;\n    \n    \u002F\u002F 3. 设置相机跟踪\n    sim.set_camera_track(\"base_link\", 2.0);\n    \n    \u002F\u002F 4. 初始化控制器（手柄\u002FIMU\u002FPID）\n    CarController controller;\n    \n    controller.Init(sim.model(), sim.data());\n    \n    \u002F\u002F 5. 进入主循环\n    sim.run([&](mjModel* m, mjData* d) {\n    \n    controller.Main_Control_Update();\n    \n    });\n    return 0;\n\n}\n",[83,901,902,907,911,916,921,925,930,934,939,943,948,953,958,963,967,972,976,981,986,990,994,999,1005,1011,1016,1022,1028,1033,1039,1044,1050,1056,1061,1067,1072,1078,1084,1089],{"__ignoreMap":164},[168,903,904],{"class":170,"line":171},[168,905,906],{},"\u002F\u002Fmaoi.cc\n",[168,908,909],{"class":170,"line":178},[168,910,228],{"emptyLinePlaceholder":227},[168,912,913],{"class":170,"line":192},[168,914,915],{},"#include \"simulator\u002Fsimulator.h\"\n",[168,917,918],{"class":170,"line":224},[168,919,920],{},"#include \"control\u002Fcontrol.h\"\n",[168,922,923],{"class":170,"line":231},[168,924,228],{"emptyLinePlaceholder":227},[168,926,927],{"class":170,"line":237},[168,928,929],{},"int main()\n",[168,931,932],{"class":170,"line":270},[168,933,228],{"emptyLinePlaceholder":227},[168,935,936],{"class":170,"line":275},[168,937,938],{},"{\n",[168,940,941],{"class":170,"line":281},[168,942,228],{"emptyLinePlaceholder":227},[168,944,945],{"class":170,"line":290},[168,946,947],{},"    Simulator sim;\n",[168,949,950],{"class":170,"line":299},[168,951,952],{},"    \n",[168,954,955],{"class":170,"line":311},[168,956,957],{},"    \u002F\u002F 1. 加载模型\n",[168,959,960],{"class":170,"line":316},[168,961,962],{},"    if (!sim.load_model(\"..\u002Fmodels\u002Fmodel.xml\"))\n",[168,964,965],{"class":170,"line":322},[168,966,952],{},[168,968,969],{"class":170,"line":345},[168,970,971],{},"    return 1;\n",[168,973,974],{"class":170,"line":369},[168,975,952],{},[168,977,978],{"class":170,"line":395},[168,979,980],{},"    \u002F\u002F 2. 初始化窗口和可视化\n",[168,982,983],{"class":170,"line":400},[168,984,985],{},"    if (!sim.init_visual(1200, 900, \"WheelLeg Demo\"))\n",[168,987,988],{"class":170,"line":406},[168,989,952],{},[168,991,992],{"class":170,"line":414},[168,993,971],{},[168,995,997],{"class":170,"line":996},21,[168,998,952],{},[168,1000,1002],{"class":170,"line":1001},22,[168,1003,1004],{},"    \u002F\u002F 3. 设置相机跟踪\n",[168,1006,1008],{"class":170,"line":1007},23,[168,1009,1010],{},"    sim.set_camera_track(\"base_link\", 2.0);\n",[168,1012,1014],{"class":170,"line":1013},24,[168,1015,952],{},[168,1017,1019],{"class":170,"line":1018},25,[168,1020,1021],{},"    \u002F\u002F 4. 初始化控制器（手柄\u002FIMU\u002FPID）\n",[168,1023,1025],{"class":170,"line":1024},26,[168,1026,1027],{},"    CarController controller;\n",[168,1029,1031],{"class":170,"line":1030},27,[168,1032,952],{},[168,1034,1036],{"class":170,"line":1035},28,[168,1037,1038],{},"    controller.Init(sim.model(), sim.data());\n",[168,1040,1042],{"class":170,"line":1041},29,[168,1043,952],{},[168,1045,1047],{"class":170,"line":1046},30,[168,1048,1049],{},"    \u002F\u002F 5. 进入主循环\n",[168,1051,1053],{"class":170,"line":1052},31,[168,1054,1055],{},"    sim.run([&](mjModel* m, mjData* d) {\n",[168,1057,1059],{"class":170,"line":1058},32,[168,1060,952],{},[168,1062,1064],{"class":170,"line":1063},33,[168,1065,1066],{},"    controller.Main_Control_Update();\n",[168,1068,1070],{"class":170,"line":1069},34,[168,1071,952],{},[168,1073,1075],{"class":170,"line":1074},35,[168,1076,1077],{},"    });\n",[168,1079,1081],{"class":170,"line":1080},36,[168,1082,1083],{},"    return 0;\n",[168,1085,1087],{"class":170,"line":1086},37,[168,1088,228],{"emptyLinePlaceholder":227},[168,1090,1092],{"class":170,"line":1091},38,[168,1093,1094],{},"}\n",[10,1096,1097],{},[83,1098,1099],{},"simulator.cpp",[159,1101,1103],{"className":869,"code":1102,"language":871,"meta":164,"style":164},"#include \"simulator\u002Fsimulator.h\"\n\n#include \u003Ciostream>\n\n  \n\nSimulator::~Simulator()\n\n{\n\n\u002F\u002F 确保 OpenGL 上下文活跃再释放 MuJoCo 渲染资源\n\nif (window_) glfwMakeContextCurrent(window_);\n\nif (visual_ready_) mjr_freeContext(&con_);\n\nif (visual_ready_) mjv_freeScene(&scn_);\n\nif (d_) mj_deleteData(d_);\n\nif (m_) mj_deleteModel(m_);\n\nif (window_) glfwDestroyWindow(window_);\n\n\u002F\u002F Linux + NVIDIA 下 glfwTerminate 可能崩溃，仅 macOS\u002FWindows 调用\n\n#if defined(__APPLE__) || defined(_WIN32)\n\nif (window_) glfwTerminate();\n\n#endif\n\n}\n\n  \n\n\u002F\u002F ==================== 模型加载 ====================\n\nbool Simulator::load_model(const char* xml_path)\n\n{\n\nchar error[1000] = \"Could not load binary model\";\n\nm_ = mj_loadXML(xml_path, nullptr, error, sizeof(error));\n\nif (!m_) {\n\nstd::cerr \u003C\u003C \"[ERROR] 模型加载失败: \" \u003C\u003C error \u003C\u003C std::endl;\n\nreturn false;\n\n}\n\nd_ = mj_makeData(m_);\n\nreturn true;\n\n}\n\n  \n\n\u002F\u002F ==================== 可视化初始化 ====================\n\nbool Simulator::init_visual(int width, int height, const char* title)\n\n{\n\nif (!glfwInit()) {\n\nstd::cerr \u003C\u003C \"[ERROR] GLFW 初始化失败\" \u003C\u003C std::endl;\n\nreturn false;\n\n}\n\n  \n\nwindow_ = glfwCreateWindow(width, height, title, nullptr, nullptr);\n\nif (!window_) {\n\nstd::cerr \u003C\u003C \"[ERROR] 窗口创建失败\" \u003C\u003C std::endl;\n\nreturn false;\n\n}\n\n  \n\nglfwMakeContextCurrent(window_);\n\nglfwSwapInterval(1);\n\n  \n\n\u002F\u002F 通过 user pointer 绑定实例，供静态回调转发\n\nglfwSetWindowUserPointer(window_, this);\n\n  \n\n\u002F\u002F 注册回调\n\nglfwSetKeyCallback(window_, key_cb);\n\nglfwSetMouseButtonCallback(window_, mouse_cb);\n\nglfwSetCursorPosCallback(window_, move_cb);\n\nglfwSetScrollCallback(window_, scroll_cb);\n\n  \n\n\u002F\u002F MuJoCo 可视化初始化\n\nmjv_defaultCamera(&cam_);\n\nmjv_defaultOption(&opt_);\n\nmjv_defaultScene(&scn_);\n\nmjr_defaultContext(&con_);\n\n  \n\nmjv_makeScene(m_, &scn_, 2000);\n\nmjr_makeContext(m_, &con_, mjFONTSCALE_150);\n\n  \n\nvisual_ready_ = true;\n\nreturn true;\n\n}\n\n  \n\n\u002F\u002F ==================== 相机 ====================\n\nvoid Simulator::set_camera_track(const char* body_name, double distance)\n\n{\n\ncam_.type = mjCAMERA_TRACKING;\n\ncam_.trackbodyid = mj_name2id(m_, mjOBJ_BODY, body_name);\n\ncam_.distance = distance;\n\n}\n\n  \n\n\u002F\u002F ==================== 主循环 ====================\n\nvoid Simulator::run(std::function\u003Cvoid(mjModel*, mjData*)> update)\n\n{\n\nwhile (!glfwWindowShouldClose(window_))\n\n{\n\n\u002F\u002F 仿真：每帧跑 1\u002F60 秒\n\nmjtNum sim_start = d_->time;\n\nwhile (d_->time - sim_start \u003C 1.0 \u002F 60.0)\n\n{\n\nif (update) update(m_, d_);\n\nmj_step(m_, d_);\n\n}\n\n  \n\n\u002F\u002F 渲染\n\nmjrRect viewport = {0, 0, 0, 0};\n\nglfwGetFramebufferSize(window_, &viewport.width, &viewport.height);\n\n  \n\nmjv_updateScene(m_, d_, &opt_, nullptr, &cam_, mjCAT_ALL, &scn_);\n\nmjr_render(viewport, &scn_, &con_);\n\nglfwSwapBuffers(window_);\n\nglfwPollEvents();\n\n}\n\n}\n\n  \n\n\u002F\u002F ==================== 键盘回调 ====================\n\nvoid Simulator::on_key(int key, int act)\n\n{\n\n\u002F\u002F 转发给外部处理器\n\nif (key_handler_) key_handler_(key, act);\n\n  \n\n\u002F\u002F Backspace 重置仿真\n\nif (act == GLFW_PRESS && key == GLFW_KEY_BACKSPACE) {\n\nmj_resetData(m_, d_);\n\nmj_forward(m_, d_);\n\n}\n\n}\n\n  \n\n\u002F\u002F ==================== 鼠标按键回调 ====================\n\nvoid Simulator::on_mouse_button(int button, int act)\n\n{\n\nbtn_left_ = (glfwGetMouseButton(window_, GLFW_MOUSE_BUTTON_LEFT) == GLFW_PRESS);\n\nbtn_middle_ = (glfwGetMouseButton(window_, GLFW_MOUSE_BUTTON_MIDDLE) == GLFW_PRESS);\n\nbtn_right_ = (glfwGetMouseButton(window_, GLFW_MOUSE_BUTTON_RIGHT) == GLFW_PRESS);\n\n  \n\nglfwGetCursorPos(window_, &lastx_, &lasty_);\n\n}\n\n  \n\n\u002F\u002F ==================== 鼠标移动回调 ====================\n\nvoid Simulator::on_mouse_move(double xpos, double ypos)\n\n{\n\nif (!btn_left_ && !btn_middle_ && !btn_right_) return;\n\n  \n\ndouble dx = xpos - lastx_;\n\ndouble dy = ypos - lasty_;\n\nlastx_ = xpos;\n\nlasty_ = ypos;\n\n  \n\nint width, height;\n\nglfwGetWindowSize(window_, &width, &height);\n\n  \n\nbool shift = (glfwGetKey(window_, GLFW_KEY_LEFT_SHIFT) == GLFW_PRESS ||\n\nglfwGetKey(window_, GLFW_KEY_RIGHT_SHIFT) == GLFW_PRESS);\n\n  \n\nmjtMouse action;\n\nif (btn_right_) action = shift ? mjMOUSE_MOVE_H : mjMOUSE_MOVE_V;\n\nelse if (btn_left_) action = shift ? mjMOUSE_ROTATE_H : mjMOUSE_ROTATE_V;\n\nelse action = mjMOUSE_ZOOM;\n\n  \n\nmjv_moveCamera(m_, action, dx \u002F height, dy \u002F height, &scn_, &cam_);\n\n}\n\n  \n\n\u002F\u002F ==================== 滚轮回调 ====================\n\nvoid Simulator::on_scroll(double xoffset, double yoffset)\n\n{\n\nmjv_moveCamera(m_, mjMOUSE_ZOOM, 0, -0.05 * yoffset, &scn_, &cam_);\n\n}\n",[83,1104,1105,1109,1113,1118,1122,1127,1131,1136,1140,1144,1148,1153,1157,1162,1166,1171,1175,1180,1184,1189,1193,1198,1202,1207,1211,1216,1220,1225,1229,1234,1238,1243,1247,1251,1255,1259,1263,1268,1272,1278,1283,1288,1293,1298,1303,1309,1314,1320,1325,1331,1336,1342,1347,1352,1357,1363,1368,1374,1379,1384,1389,1394,1399,1405,1410,1416,1421,1426,1431,1437,1442,1448,1453,1458,1463,1468,1473,1478,1483,1489,1494,1500,1505,1511,1516,1521,1526,1531,1536,1541,1546,1552,1557,1563,1568,1573,1578,1584,1589,1595,1600,1605,1610,1616,1621,1627,1632,1638,1643,1649,1654,1660,1665,1670,1675,1681,1686,1692,1697,1703,1708,1714,1719,1725,1730,1735,1740,1746,1751,1757,1762,1767,1772,1778,1783,1788,1793,1798,1803,1808,1813,1819,1824,1830,1835,1840,1845,1851,1856,1862,1867,1873,1878,1883,1888,1893,1898,1904,1909,1915,1920,1925,1930,1936,1941,1946,1951,1957,1962,1968,1973,1979,1984,1989,1994,2000,2005,2011,2016,2021,2026,2031,2036,2042,2047,2053,2058,2064,2069,2074,2079,2085,2090,2096,2101,2107,2112,2118,2123,2128,2133,2138,2143,2148,2153,2159,2164,2170,2175,2180,2185,2191,2196,2202,2207,2212,2217,2223,2228,2234,2239,2245,2250,2256,2261,2266,2271,2276,2281,2286,2291,2297,2302,2308,2313,2318,2323,2329,2334,2340,2345,2351,2356,2361,2366,2372,2377,2382,2387,2392,2397,2403,2408,2414,2419,2424,2429,2435,2440,2445,2450,2456,2461,2467,2472,2478,2483,2489,2494,2499,2504,2510,2515,2521,2526,2531,2536,2542,2547,2553,2558,2563,2568,2574,2579,2585,2590,2596,2601,2607,2612,2617,2622,2628,2633,2638,2643,2648,2653,2659,2664,2670,2675,2680,2685,2691,2696],{"__ignoreMap":164},[168,1106,1107],{"class":170,"line":171},[168,1108,915],{},[168,1110,1111],{"class":170,"line":178},[168,1112,228],{"emptyLinePlaceholder":227},[168,1114,1115],{"class":170,"line":192},[168,1116,1117],{},"#include \u003Ciostream>\n",[168,1119,1120],{"class":170,"line":224},[168,1121,228],{"emptyLinePlaceholder":227},[168,1123,1124],{"class":170,"line":231},[168,1125,1126],{},"  \n",[168,1128,1129],{"class":170,"line":237},[168,1130,228],{"emptyLinePlaceholder":227},[168,1132,1133],{"class":170,"line":270},[168,1134,1135],{},"Simulator::~Simulator()\n",[168,1137,1138],{"class":170,"line":275},[168,1139,228],{"emptyLinePlaceholder":227},[168,1141,1142],{"class":170,"line":281},[168,1143,938],{},[168,1145,1146],{"class":170,"line":290},[168,1147,228],{"emptyLinePlaceholder":227},[168,1149,1150],{"class":170,"line":299},[168,1151,1152],{},"\u002F\u002F 确保 OpenGL 上下文活跃再释放 MuJoCo 渲染资源\n",[168,1154,1155],{"class":170,"line":311},[168,1156,228],{"emptyLinePlaceholder":227},[168,1158,1159],{"class":170,"line":316},[168,1160,1161],{},"if (window_) glfwMakeContextCurrent(window_);\n",[168,1163,1164],{"class":170,"line":322},[168,1165,228],{"emptyLinePlaceholder":227},[168,1167,1168],{"class":170,"line":345},[168,1169,1170],{},"if (visual_ready_) mjr_freeContext(&con_);\n",[168,1172,1173],{"class":170,"line":369},[168,1174,228],{"emptyLinePlaceholder":227},[168,1176,1177],{"class":170,"line":395},[168,1178,1179],{},"if (visual_ready_) mjv_freeScene(&scn_);\n",[168,1181,1182],{"class":170,"line":400},[168,1183,228],{"emptyLinePlaceholder":227},[168,1185,1186],{"class":170,"line":406},[168,1187,1188],{},"if (d_) mj_deleteData(d_);\n",[168,1190,1191],{"class":170,"line":414},[168,1192,228],{"emptyLinePlaceholder":227},[168,1194,1195],{"class":170,"line":996},[168,1196,1197],{},"if (m_) mj_deleteModel(m_);\n",[168,1199,1200],{"class":170,"line":1001},[168,1201,228],{"emptyLinePlaceholder":227},[168,1203,1204],{"class":170,"line":1007},[168,1205,1206],{},"if (window_) glfwDestroyWindow(window_);\n",[168,1208,1209],{"class":170,"line":1013},[168,1210,228],{"emptyLinePlaceholder":227},[168,1212,1213],{"class":170,"line":1018},[168,1214,1215],{},"\u002F\u002F Linux + NVIDIA 下 glfwTerminate 可能崩溃，仅 macOS\u002FWindows 调用\n",[168,1217,1218],{"class":170,"line":1024},[168,1219,228],{"emptyLinePlaceholder":227},[168,1221,1222],{"class":170,"line":1030},[168,1223,1224],{},"#if defined(__APPLE__) || defined(_WIN32)\n",[168,1226,1227],{"class":170,"line":1035},[168,1228,228],{"emptyLinePlaceholder":227},[168,1230,1231],{"class":170,"line":1041},[168,1232,1233],{},"if (window_) glfwTerminate();\n",[168,1235,1236],{"class":170,"line":1046},[168,1237,228],{"emptyLinePlaceholder":227},[168,1239,1240],{"class":170,"line":1052},[168,1241,1242],{},"#endif\n",[168,1244,1245],{"class":170,"line":1058},[168,1246,228],{"emptyLinePlaceholder":227},[168,1248,1249],{"class":170,"line":1063},[168,1250,1094],{},[168,1252,1253],{"class":170,"line":1069},[168,1254,228],{"emptyLinePlaceholder":227},[168,1256,1257],{"class":170,"line":1074},[168,1258,1126],{},[168,1260,1261],{"class":170,"line":1080},[168,1262,228],{"emptyLinePlaceholder":227},[168,1264,1265],{"class":170,"line":1086},[168,1266,1267],{},"\u002F\u002F ==================== 模型加载 ====================\n",[168,1269,1270],{"class":170,"line":1091},[168,1271,228],{"emptyLinePlaceholder":227},[168,1273,1275],{"class":170,"line":1274},39,[168,1276,1277],{},"bool Simulator::load_model(const char* xml_path)\n",[168,1279,1281],{"class":170,"line":1280},40,[168,1282,228],{"emptyLinePlaceholder":227},[168,1284,1286],{"class":170,"line":1285},41,[168,1287,938],{},[168,1289,1291],{"class":170,"line":1290},42,[168,1292,228],{"emptyLinePlaceholder":227},[168,1294,1296],{"class":170,"line":1295},43,[168,1297,883],{},[168,1299,1301],{"class":170,"line":1300},44,[168,1302,228],{"emptyLinePlaceholder":227},[168,1304,1306],{"class":170,"line":1305},45,[168,1307,1308],{},"m_ = mj_loadXML(xml_path, nullptr, error, sizeof(error));\n",[168,1310,1312],{"class":170,"line":1311},46,[168,1313,228],{"emptyLinePlaceholder":227},[168,1315,1317],{"class":170,"line":1316},47,[168,1318,1319],{},"if (!m_) {\n",[168,1321,1323],{"class":170,"line":1322},48,[168,1324,228],{"emptyLinePlaceholder":227},[168,1326,1328],{"class":170,"line":1327},49,[168,1329,1330],{},"std::cerr \u003C\u003C \"[ERROR] 模型加载失败: \" \u003C\u003C error \u003C\u003C std::endl;\n",[168,1332,1334],{"class":170,"line":1333},50,[168,1335,228],{"emptyLinePlaceholder":227},[168,1337,1339],{"class":170,"line":1338},51,[168,1340,1341],{},"return false;\n",[168,1343,1345],{"class":170,"line":1344},52,[168,1346,228],{"emptyLinePlaceholder":227},[168,1348,1350],{"class":170,"line":1349},53,[168,1351,1094],{},[168,1353,1355],{"class":170,"line":1354},54,[168,1356,228],{"emptyLinePlaceholder":227},[168,1358,1360],{"class":170,"line":1359},55,[168,1361,1362],{},"d_ = mj_makeData(m_);\n",[168,1364,1366],{"class":170,"line":1365},56,[168,1367,228],{"emptyLinePlaceholder":227},[168,1369,1371],{"class":170,"line":1370},57,[168,1372,1373],{},"return true;\n",[168,1375,1377],{"class":170,"line":1376},58,[168,1378,228],{"emptyLinePlaceholder":227},[168,1380,1382],{"class":170,"line":1381},59,[168,1383,1094],{},[168,1385,1387],{"class":170,"line":1386},60,[168,1388,228],{"emptyLinePlaceholder":227},[168,1390,1392],{"class":170,"line":1391},61,[168,1393,1126],{},[168,1395,1397],{"class":170,"line":1396},62,[168,1398,228],{"emptyLinePlaceholder":227},[168,1400,1402],{"class":170,"line":1401},63,[168,1403,1404],{},"\u002F\u002F ==================== 可视化初始化 ====================\n",[168,1406,1408],{"class":170,"line":1407},64,[168,1409,228],{"emptyLinePlaceholder":227},[168,1411,1413],{"class":170,"line":1412},65,[168,1414,1415],{},"bool Simulator::init_visual(int width, int height, const char* title)\n",[168,1417,1419],{"class":170,"line":1418},66,[168,1420,228],{"emptyLinePlaceholder":227},[168,1422,1424],{"class":170,"line":1423},67,[168,1425,938],{},[168,1427,1429],{"class":170,"line":1428},68,[168,1430,228],{"emptyLinePlaceholder":227},[168,1432,1434],{"class":170,"line":1433},69,[168,1435,1436],{},"if (!glfwInit()) {\n",[168,1438,1440],{"class":170,"line":1439},70,[168,1441,228],{"emptyLinePlaceholder":227},[168,1443,1445],{"class":170,"line":1444},71,[168,1446,1447],{},"std::cerr \u003C\u003C \"[ERROR] GLFW 初始化失败\" \u003C\u003C std::endl;\n",[168,1449,1451],{"class":170,"line":1450},72,[168,1452,228],{"emptyLinePlaceholder":227},[168,1454,1456],{"class":170,"line":1455},73,[168,1457,1341],{},[168,1459,1461],{"class":170,"line":1460},74,[168,1462,228],{"emptyLinePlaceholder":227},[168,1464,1466],{"class":170,"line":1465},75,[168,1467,1094],{},[168,1469,1471],{"class":170,"line":1470},76,[168,1472,228],{"emptyLinePlaceholder":227},[168,1474,1476],{"class":170,"line":1475},77,[168,1477,1126],{},[168,1479,1481],{"class":170,"line":1480},78,[168,1482,228],{"emptyLinePlaceholder":227},[168,1484,1486],{"class":170,"line":1485},79,[168,1487,1488],{},"window_ = glfwCreateWindow(width, height, title, nullptr, nullptr);\n",[168,1490,1492],{"class":170,"line":1491},80,[168,1493,228],{"emptyLinePlaceholder":227},[168,1495,1497],{"class":170,"line":1496},81,[168,1498,1499],{},"if (!window_) {\n",[168,1501,1503],{"class":170,"line":1502},82,[168,1504,228],{"emptyLinePlaceholder":227},[168,1506,1508],{"class":170,"line":1507},83,[168,1509,1510],{},"std::cerr \u003C\u003C \"[ERROR] 窗口创建失败\" \u003C\u003C std::endl;\n",[168,1512,1514],{"class":170,"line":1513},84,[168,1515,228],{"emptyLinePlaceholder":227},[168,1517,1519],{"class":170,"line":1518},85,[168,1520,1341],{},[168,1522,1524],{"class":170,"line":1523},86,[168,1525,228],{"emptyLinePlaceholder":227},[168,1527,1529],{"class":170,"line":1528},87,[168,1530,1094],{},[168,1532,1534],{"class":170,"line":1533},88,[168,1535,228],{"emptyLinePlaceholder":227},[168,1537,1539],{"class":170,"line":1538},89,[168,1540,1126],{},[168,1542,1544],{"class":170,"line":1543},90,[168,1545,228],{"emptyLinePlaceholder":227},[168,1547,1549],{"class":170,"line":1548},91,[168,1550,1551],{},"glfwMakeContextCurrent(window_);\n",[168,1553,1555],{"class":170,"line":1554},92,[168,1556,228],{"emptyLinePlaceholder":227},[168,1558,1560],{"class":170,"line":1559},93,[168,1561,1562],{},"glfwSwapInterval(1);\n",[168,1564,1566],{"class":170,"line":1565},94,[168,1567,228],{"emptyLinePlaceholder":227},[168,1569,1571],{"class":170,"line":1570},95,[168,1572,1126],{},[168,1574,1576],{"class":170,"line":1575},96,[168,1577,228],{"emptyLinePlaceholder":227},[168,1579,1581],{"class":170,"line":1580},97,[168,1582,1583],{},"\u002F\u002F 通过 user pointer 绑定实例，供静态回调转发\n",[168,1585,1587],{"class":170,"line":1586},98,[168,1588,228],{"emptyLinePlaceholder":227},[168,1590,1592],{"class":170,"line":1591},99,[168,1593,1594],{},"glfwSetWindowUserPointer(window_, this);\n",[168,1596,1598],{"class":170,"line":1597},100,[168,1599,228],{"emptyLinePlaceholder":227},[168,1601,1603],{"class":170,"line":1602},101,[168,1604,1126],{},[168,1606,1608],{"class":170,"line":1607},102,[168,1609,228],{"emptyLinePlaceholder":227},[168,1611,1613],{"class":170,"line":1612},103,[168,1614,1615],{},"\u002F\u002F 注册回调\n",[168,1617,1619],{"class":170,"line":1618},104,[168,1620,228],{"emptyLinePlaceholder":227},[168,1622,1624],{"class":170,"line":1623},105,[168,1625,1626],{},"glfwSetKeyCallback(window_, key_cb);\n",[168,1628,1630],{"class":170,"line":1629},106,[168,1631,228],{"emptyLinePlaceholder":227},[168,1633,1635],{"class":170,"line":1634},107,[168,1636,1637],{},"glfwSetMouseButtonCallback(window_, mouse_cb);\n",[168,1639,1641],{"class":170,"line":1640},108,[168,1642,228],{"emptyLinePlaceholder":227},[168,1644,1646],{"class":170,"line":1645},109,[168,1647,1648],{},"glfwSetCursorPosCallback(window_, move_cb);\n",[168,1650,1652],{"class":170,"line":1651},110,[168,1653,228],{"emptyLinePlaceholder":227},[168,1655,1657],{"class":170,"line":1656},111,[168,1658,1659],{},"glfwSetScrollCallback(window_, scroll_cb);\n",[168,1661,1663],{"class":170,"line":1662},112,[168,1664,228],{"emptyLinePlaceholder":227},[168,1666,1668],{"class":170,"line":1667},113,[168,1669,1126],{},[168,1671,1673],{"class":170,"line":1672},114,[168,1674,228],{"emptyLinePlaceholder":227},[168,1676,1678],{"class":170,"line":1677},115,[168,1679,1680],{},"\u002F\u002F MuJoCo 可视化初始化\n",[168,1682,1684],{"class":170,"line":1683},116,[168,1685,228],{"emptyLinePlaceholder":227},[168,1687,1689],{"class":170,"line":1688},117,[168,1690,1691],{},"mjv_defaultCamera(&cam_);\n",[168,1693,1695],{"class":170,"line":1694},118,[168,1696,228],{"emptyLinePlaceholder":227},[168,1698,1700],{"class":170,"line":1699},119,[168,1701,1702],{},"mjv_defaultOption(&opt_);\n",[168,1704,1706],{"class":170,"line":1705},120,[168,1707,228],{"emptyLinePlaceholder":227},[168,1709,1711],{"class":170,"line":1710},121,[168,1712,1713],{},"mjv_defaultScene(&scn_);\n",[168,1715,1717],{"class":170,"line":1716},122,[168,1718,228],{"emptyLinePlaceholder":227},[168,1720,1722],{"class":170,"line":1721},123,[168,1723,1724],{},"mjr_defaultContext(&con_);\n",[168,1726,1728],{"class":170,"line":1727},124,[168,1729,228],{"emptyLinePlaceholder":227},[168,1731,1733],{"class":170,"line":1732},125,[168,1734,1126],{},[168,1736,1738],{"class":170,"line":1737},126,[168,1739,228],{"emptyLinePlaceholder":227},[168,1741,1743],{"class":170,"line":1742},127,[168,1744,1745],{},"mjv_makeScene(m_, &scn_, 2000);\n",[168,1747,1749],{"class":170,"line":1748},128,[168,1750,228],{"emptyLinePlaceholder":227},[168,1752,1754],{"class":170,"line":1753},129,[168,1755,1756],{},"mjr_makeContext(m_, &con_, mjFONTSCALE_150);\n",[168,1758,1760],{"class":170,"line":1759},130,[168,1761,228],{"emptyLinePlaceholder":227},[168,1763,1765],{"class":170,"line":1764},131,[168,1766,1126],{},[168,1768,1770],{"class":170,"line":1769},132,[168,1771,228],{"emptyLinePlaceholder":227},[168,1773,1775],{"class":170,"line":1774},133,[168,1776,1777],{},"visual_ready_ = true;\n",[168,1779,1781],{"class":170,"line":1780},134,[168,1782,228],{"emptyLinePlaceholder":227},[168,1784,1786],{"class":170,"line":1785},135,[168,1787,1373],{},[168,1789,1791],{"class":170,"line":1790},136,[168,1792,228],{"emptyLinePlaceholder":227},[168,1794,1796],{"class":170,"line":1795},137,[168,1797,1094],{},[168,1799,1801],{"class":170,"line":1800},138,[168,1802,228],{"emptyLinePlaceholder":227},[168,1804,1806],{"class":170,"line":1805},139,[168,1807,1126],{},[168,1809,1811],{"class":170,"line":1810},140,[168,1812,228],{"emptyLinePlaceholder":227},[168,1814,1816],{"class":170,"line":1815},141,[168,1817,1818],{},"\u002F\u002F ==================== 相机 ====================\n",[168,1820,1822],{"class":170,"line":1821},142,[168,1823,228],{"emptyLinePlaceholder":227},[168,1825,1827],{"class":170,"line":1826},143,[168,1828,1829],{},"void Simulator::set_camera_track(const char* body_name, double distance)\n",[168,1831,1833],{"class":170,"line":1832},144,[168,1834,228],{"emptyLinePlaceholder":227},[168,1836,1838],{"class":170,"line":1837},145,[168,1839,938],{},[168,1841,1843],{"class":170,"line":1842},146,[168,1844,228],{"emptyLinePlaceholder":227},[168,1846,1848],{"class":170,"line":1847},147,[168,1849,1850],{},"cam_.type = mjCAMERA_TRACKING;\n",[168,1852,1854],{"class":170,"line":1853},148,[168,1855,228],{"emptyLinePlaceholder":227},[168,1857,1859],{"class":170,"line":1858},149,[168,1860,1861],{},"cam_.trackbodyid = mj_name2id(m_, mjOBJ_BODY, body_name);\n",[168,1863,1865],{"class":170,"line":1864},150,[168,1866,228],{"emptyLinePlaceholder":227},[168,1868,1870],{"class":170,"line":1869},151,[168,1871,1872],{},"cam_.distance = distance;\n",[168,1874,1876],{"class":170,"line":1875},152,[168,1877,228],{"emptyLinePlaceholder":227},[168,1879,1881],{"class":170,"line":1880},153,[168,1882,1094],{},[168,1884,1886],{"class":170,"line":1885},154,[168,1887,228],{"emptyLinePlaceholder":227},[168,1889,1891],{"class":170,"line":1890},155,[168,1892,1126],{},[168,1894,1896],{"class":170,"line":1895},156,[168,1897,228],{"emptyLinePlaceholder":227},[168,1899,1901],{"class":170,"line":1900},157,[168,1902,1903],{},"\u002F\u002F ==================== 主循环 ====================\n",[168,1905,1907],{"class":170,"line":1906},158,[168,1908,228],{"emptyLinePlaceholder":227},[168,1910,1912],{"class":170,"line":1911},159,[168,1913,1914],{},"void Simulator::run(std::function\u003Cvoid(mjModel*, mjData*)> update)\n",[168,1916,1918],{"class":170,"line":1917},160,[168,1919,228],{"emptyLinePlaceholder":227},[168,1921,1923],{"class":170,"line":1922},161,[168,1924,938],{},[168,1926,1928],{"class":170,"line":1927},162,[168,1929,228],{"emptyLinePlaceholder":227},[168,1931,1933],{"class":170,"line":1932},163,[168,1934,1935],{},"while (!glfwWindowShouldClose(window_))\n",[168,1937,1939],{"class":170,"line":1938},164,[168,1940,228],{"emptyLinePlaceholder":227},[168,1942,1944],{"class":170,"line":1943},165,[168,1945,938],{},[168,1947,1949],{"class":170,"line":1948},166,[168,1950,228],{"emptyLinePlaceholder":227},[168,1952,1954],{"class":170,"line":1953},167,[168,1955,1956],{},"\u002F\u002F 仿真：每帧跑 1\u002F60 秒\n",[168,1958,1960],{"class":170,"line":1959},168,[168,1961,228],{"emptyLinePlaceholder":227},[168,1963,1965],{"class":170,"line":1964},169,[168,1966,1967],{},"mjtNum sim_start = d_->time;\n",[168,1969,1971],{"class":170,"line":1970},170,[168,1972,228],{"emptyLinePlaceholder":227},[168,1974,1976],{"class":170,"line":1975},171,[168,1977,1978],{},"while (d_->time - sim_start \u003C 1.0 \u002F 60.0)\n",[168,1980,1982],{"class":170,"line":1981},172,[168,1983,228],{"emptyLinePlaceholder":227},[168,1985,1987],{"class":170,"line":1986},173,[168,1988,938],{},[168,1990,1992],{"class":170,"line":1991},174,[168,1993,228],{"emptyLinePlaceholder":227},[168,1995,1997],{"class":170,"line":1996},175,[168,1998,1999],{},"if (update) update(m_, d_);\n",[168,2001,2003],{"class":170,"line":2002},176,[168,2004,228],{"emptyLinePlaceholder":227},[168,2006,2008],{"class":170,"line":2007},177,[168,2009,2010],{},"mj_step(m_, d_);\n",[168,2012,2014],{"class":170,"line":2013},178,[168,2015,228],{"emptyLinePlaceholder":227},[168,2017,2019],{"class":170,"line":2018},179,[168,2020,1094],{},[168,2022,2024],{"class":170,"line":2023},180,[168,2025,228],{"emptyLinePlaceholder":227},[168,2027,2029],{"class":170,"line":2028},181,[168,2030,1126],{},[168,2032,2034],{"class":170,"line":2033},182,[168,2035,228],{"emptyLinePlaceholder":227},[168,2037,2039],{"class":170,"line":2038},183,[168,2040,2041],{},"\u002F\u002F 渲染\n",[168,2043,2045],{"class":170,"line":2044},184,[168,2046,228],{"emptyLinePlaceholder":227},[168,2048,2050],{"class":170,"line":2049},185,[168,2051,2052],{},"mjrRect viewport = {0, 0, 0, 0};\n",[168,2054,2056],{"class":170,"line":2055},186,[168,2057,228],{"emptyLinePlaceholder":227},[168,2059,2061],{"class":170,"line":2060},187,[168,2062,2063],{},"glfwGetFramebufferSize(window_, &viewport.width, &viewport.height);\n",[168,2065,2067],{"class":170,"line":2066},188,[168,2068,228],{"emptyLinePlaceholder":227},[168,2070,2072],{"class":170,"line":2071},189,[168,2073,1126],{},[168,2075,2077],{"class":170,"line":2076},190,[168,2078,228],{"emptyLinePlaceholder":227},[168,2080,2082],{"class":170,"line":2081},191,[168,2083,2084],{},"mjv_updateScene(m_, d_, &opt_, nullptr, &cam_, mjCAT_ALL, &scn_);\n",[168,2086,2088],{"class":170,"line":2087},192,[168,2089,228],{"emptyLinePlaceholder":227},[168,2091,2093],{"class":170,"line":2092},193,[168,2094,2095],{},"mjr_render(viewport, &scn_, &con_);\n",[168,2097,2099],{"class":170,"line":2098},194,[168,2100,228],{"emptyLinePlaceholder":227},[168,2102,2104],{"class":170,"line":2103},195,[168,2105,2106],{},"glfwSwapBuffers(window_);\n",[168,2108,2110],{"class":170,"line":2109},196,[168,2111,228],{"emptyLinePlaceholder":227},[168,2113,2115],{"class":170,"line":2114},197,[168,2116,2117],{},"glfwPollEvents();\n",[168,2119,2121],{"class":170,"line":2120},198,[168,2122,228],{"emptyLinePlaceholder":227},[168,2124,2126],{"class":170,"line":2125},199,[168,2127,1094],{},[168,2129,2131],{"class":170,"line":2130},200,[168,2132,228],{"emptyLinePlaceholder":227},[168,2134,2136],{"class":170,"line":2135},201,[168,2137,1094],{},[168,2139,2141],{"class":170,"line":2140},202,[168,2142,228],{"emptyLinePlaceholder":227},[168,2144,2146],{"class":170,"line":2145},203,[168,2147,1126],{},[168,2149,2151],{"class":170,"line":2150},204,[168,2152,228],{"emptyLinePlaceholder":227},[168,2154,2156],{"class":170,"line":2155},205,[168,2157,2158],{},"\u002F\u002F ==================== 键盘回调 ====================\n",[168,2160,2162],{"class":170,"line":2161},206,[168,2163,228],{"emptyLinePlaceholder":227},[168,2165,2167],{"class":170,"line":2166},207,[168,2168,2169],{},"void Simulator::on_key(int key, int act)\n",[168,2171,2173],{"class":170,"line":2172},208,[168,2174,228],{"emptyLinePlaceholder":227},[168,2176,2178],{"class":170,"line":2177},209,[168,2179,938],{},[168,2181,2183],{"class":170,"line":2182},210,[168,2184,228],{"emptyLinePlaceholder":227},[168,2186,2188],{"class":170,"line":2187},211,[168,2189,2190],{},"\u002F\u002F 转发给外部处理器\n",[168,2192,2194],{"class":170,"line":2193},212,[168,2195,228],{"emptyLinePlaceholder":227},[168,2197,2199],{"class":170,"line":2198},213,[168,2200,2201],{},"if (key_handler_) key_handler_(key, act);\n",[168,2203,2205],{"class":170,"line":2204},214,[168,2206,228],{"emptyLinePlaceholder":227},[168,2208,2210],{"class":170,"line":2209},215,[168,2211,1126],{},[168,2213,2215],{"class":170,"line":2214},216,[168,2216,228],{"emptyLinePlaceholder":227},[168,2218,2220],{"class":170,"line":2219},217,[168,2221,2222],{},"\u002F\u002F Backspace 重置仿真\n",[168,2224,2226],{"class":170,"line":2225},218,[168,2227,228],{"emptyLinePlaceholder":227},[168,2229,2231],{"class":170,"line":2230},219,[168,2232,2233],{},"if (act == GLFW_PRESS && key == GLFW_KEY_BACKSPACE) {\n",[168,2235,2237],{"class":170,"line":2236},220,[168,2238,228],{"emptyLinePlaceholder":227},[168,2240,2242],{"class":170,"line":2241},221,[168,2243,2244],{},"mj_resetData(m_, d_);\n",[168,2246,2248],{"class":170,"line":2247},222,[168,2249,228],{"emptyLinePlaceholder":227},[168,2251,2253],{"class":170,"line":2252},223,[168,2254,2255],{},"mj_forward(m_, d_);\n",[168,2257,2259],{"class":170,"line":2258},224,[168,2260,228],{"emptyLinePlaceholder":227},[168,2262,2264],{"class":170,"line":2263},225,[168,2265,1094],{},[168,2267,2269],{"class":170,"line":2268},226,[168,2270,228],{"emptyLinePlaceholder":227},[168,2272,2274],{"class":170,"line":2273},227,[168,2275,1094],{},[168,2277,2279],{"class":170,"line":2278},228,[168,2280,228],{"emptyLinePlaceholder":227},[168,2282,2284],{"class":170,"line":2283},229,[168,2285,1126],{},[168,2287,2289],{"class":170,"line":2288},230,[168,2290,228],{"emptyLinePlaceholder":227},[168,2292,2294],{"class":170,"line":2293},231,[168,2295,2296],{},"\u002F\u002F ==================== 鼠标按键回调 ====================\n",[168,2298,2300],{"class":170,"line":2299},232,[168,2301,228],{"emptyLinePlaceholder":227},[168,2303,2305],{"class":170,"line":2304},233,[168,2306,2307],{},"void Simulator::on_mouse_button(int button, int act)\n",[168,2309,2311],{"class":170,"line":2310},234,[168,2312,228],{"emptyLinePlaceholder":227},[168,2314,2316],{"class":170,"line":2315},235,[168,2317,938],{},[168,2319,2321],{"class":170,"line":2320},236,[168,2322,228],{"emptyLinePlaceholder":227},[168,2324,2326],{"class":170,"line":2325},237,[168,2327,2328],{},"btn_left_ = (glfwGetMouseButton(window_, GLFW_MOUSE_BUTTON_LEFT) == GLFW_PRESS);\n",[168,2330,2332],{"class":170,"line":2331},238,[168,2333,228],{"emptyLinePlaceholder":227},[168,2335,2337],{"class":170,"line":2336},239,[168,2338,2339],{},"btn_middle_ = (glfwGetMouseButton(window_, GLFW_MOUSE_BUTTON_MIDDLE) == GLFW_PRESS);\n",[168,2341,2343],{"class":170,"line":2342},240,[168,2344,228],{"emptyLinePlaceholder":227},[168,2346,2348],{"class":170,"line":2347},241,[168,2349,2350],{},"btn_right_ = (glfwGetMouseButton(window_, GLFW_MOUSE_BUTTON_RIGHT) == GLFW_PRESS);\n",[168,2352,2354],{"class":170,"line":2353},242,[168,2355,228],{"emptyLinePlaceholder":227},[168,2357,2359],{"class":170,"line":2358},243,[168,2360,1126],{},[168,2362,2364],{"class":170,"line":2363},244,[168,2365,228],{"emptyLinePlaceholder":227},[168,2367,2369],{"class":170,"line":2368},245,[168,2370,2371],{},"glfwGetCursorPos(window_, &lastx_, &lasty_);\n",[168,2373,2375],{"class":170,"line":2374},246,[168,2376,228],{"emptyLinePlaceholder":227},[168,2378,2380],{"class":170,"line":2379},247,[168,2381,1094],{},[168,2383,2385],{"class":170,"line":2384},248,[168,2386,228],{"emptyLinePlaceholder":227},[168,2388,2390],{"class":170,"line":2389},249,[168,2391,1126],{},[168,2393,2395],{"class":170,"line":2394},250,[168,2396,228],{"emptyLinePlaceholder":227},[168,2398,2400],{"class":170,"line":2399},251,[168,2401,2402],{},"\u002F\u002F ==================== 鼠标移动回调 ====================\n",[168,2404,2406],{"class":170,"line":2405},252,[168,2407,228],{"emptyLinePlaceholder":227},[168,2409,2411],{"class":170,"line":2410},253,[168,2412,2413],{},"void Simulator::on_mouse_move(double xpos, double ypos)\n",[168,2415,2417],{"class":170,"line":2416},254,[168,2418,228],{"emptyLinePlaceholder":227},[168,2420,2422],{"class":170,"line":2421},255,[168,2423,938],{},[168,2425,2427],{"class":170,"line":2426},256,[168,2428,228],{"emptyLinePlaceholder":227},[168,2430,2432],{"class":170,"line":2431},257,[168,2433,2434],{},"if (!btn_left_ && !btn_middle_ && !btn_right_) return;\n",[168,2436,2438],{"class":170,"line":2437},258,[168,2439,228],{"emptyLinePlaceholder":227},[168,2441,2443],{"class":170,"line":2442},259,[168,2444,1126],{},[168,2446,2448],{"class":170,"line":2447},260,[168,2449,228],{"emptyLinePlaceholder":227},[168,2451,2453],{"class":170,"line":2452},261,[168,2454,2455],{},"double dx = xpos - lastx_;\n",[168,2457,2459],{"class":170,"line":2458},262,[168,2460,228],{"emptyLinePlaceholder":227},[168,2462,2464],{"class":170,"line":2463},263,[168,2465,2466],{},"double dy = ypos - lasty_;\n",[168,2468,2470],{"class":170,"line":2469},264,[168,2471,228],{"emptyLinePlaceholder":227},[168,2473,2475],{"class":170,"line":2474},265,[168,2476,2477],{},"lastx_ = xpos;\n",[168,2479,2481],{"class":170,"line":2480},266,[168,2482,228],{"emptyLinePlaceholder":227},[168,2484,2486],{"class":170,"line":2485},267,[168,2487,2488],{},"lasty_ = ypos;\n",[168,2490,2492],{"class":170,"line":2491},268,[168,2493,228],{"emptyLinePlaceholder":227},[168,2495,2497],{"class":170,"line":2496},269,[168,2498,1126],{},[168,2500,2502],{"class":170,"line":2501},270,[168,2503,228],{"emptyLinePlaceholder":227},[168,2505,2507],{"class":170,"line":2506},271,[168,2508,2509],{},"int width, height;\n",[168,2511,2513],{"class":170,"line":2512},272,[168,2514,228],{"emptyLinePlaceholder":227},[168,2516,2518],{"class":170,"line":2517},273,[168,2519,2520],{},"glfwGetWindowSize(window_, &width, &height);\n",[168,2522,2524],{"class":170,"line":2523},274,[168,2525,228],{"emptyLinePlaceholder":227},[168,2527,2529],{"class":170,"line":2528},275,[168,2530,1126],{},[168,2532,2534],{"class":170,"line":2533},276,[168,2535,228],{"emptyLinePlaceholder":227},[168,2537,2539],{"class":170,"line":2538},277,[168,2540,2541],{},"bool shift = (glfwGetKey(window_, GLFW_KEY_LEFT_SHIFT) == GLFW_PRESS ||\n",[168,2543,2545],{"class":170,"line":2544},278,[168,2546,228],{"emptyLinePlaceholder":227},[168,2548,2550],{"class":170,"line":2549},279,[168,2551,2552],{},"glfwGetKey(window_, GLFW_KEY_RIGHT_SHIFT) == GLFW_PRESS);\n",[168,2554,2556],{"class":170,"line":2555},280,[168,2557,228],{"emptyLinePlaceholder":227},[168,2559,2561],{"class":170,"line":2560},281,[168,2562,1126],{},[168,2564,2566],{"class":170,"line":2565},282,[168,2567,228],{"emptyLinePlaceholder":227},[168,2569,2571],{"class":170,"line":2570},283,[168,2572,2573],{},"mjtMouse action;\n",[168,2575,2577],{"class":170,"line":2576},284,[168,2578,228],{"emptyLinePlaceholder":227},[168,2580,2582],{"class":170,"line":2581},285,[168,2583,2584],{},"if (btn_right_) action = shift ? mjMOUSE_MOVE_H : mjMOUSE_MOVE_V;\n",[168,2586,2588],{"class":170,"line":2587},286,[168,2589,228],{"emptyLinePlaceholder":227},[168,2591,2593],{"class":170,"line":2592},287,[168,2594,2595],{},"else if (btn_left_) action = shift ? mjMOUSE_ROTATE_H : mjMOUSE_ROTATE_V;\n",[168,2597,2599],{"class":170,"line":2598},288,[168,2600,228],{"emptyLinePlaceholder":227},[168,2602,2604],{"class":170,"line":2603},289,[168,2605,2606],{},"else action = mjMOUSE_ZOOM;\n",[168,2608,2610],{"class":170,"line":2609},290,[168,2611,228],{"emptyLinePlaceholder":227},[168,2613,2615],{"class":170,"line":2614},291,[168,2616,1126],{},[168,2618,2620],{"class":170,"line":2619},292,[168,2621,228],{"emptyLinePlaceholder":227},[168,2623,2625],{"class":170,"line":2624},293,[168,2626,2627],{},"mjv_moveCamera(m_, action, dx \u002F height, dy \u002F height, &scn_, &cam_);\n",[168,2629,2631],{"class":170,"line":2630},294,[168,2632,228],{"emptyLinePlaceholder":227},[168,2634,2636],{"class":170,"line":2635},295,[168,2637,1094],{},[168,2639,2641],{"class":170,"line":2640},296,[168,2642,228],{"emptyLinePlaceholder":227},[168,2644,2646],{"class":170,"line":2645},297,[168,2647,1126],{},[168,2649,2651],{"class":170,"line":2650},298,[168,2652,228],{"emptyLinePlaceholder":227},[168,2654,2656],{"class":170,"line":2655},299,[168,2657,2658],{},"\u002F\u002F ==================== 滚轮回调 ====================\n",[168,2660,2662],{"class":170,"line":2661},300,[168,2663,228],{"emptyLinePlaceholder":227},[168,2665,2667],{"class":170,"line":2666},301,[168,2668,2669],{},"void Simulator::on_scroll(double xoffset, double yoffset)\n",[168,2671,2673],{"class":170,"line":2672},302,[168,2674,228],{"emptyLinePlaceholder":227},[168,2676,2678],{"class":170,"line":2677},303,[168,2679,938],{},[168,2681,2683],{"class":170,"line":2682},304,[168,2684,228],{"emptyLinePlaceholder":227},[168,2686,2688],{"class":170,"line":2687},305,[168,2689,2690],{},"mjv_moveCamera(m_, mjMOUSE_ZOOM, 0, -0.05 * yoffset, &scn_, &cam_);\n",[168,2692,2694],{"class":170,"line":2693},306,[168,2695,228],{"emptyLinePlaceholder":227},[168,2697,2699],{"class":170,"line":2698},307,[168,2700,1094],{},[10,2702,2703],{},[83,2704,2705],{},"simulator.h",[159,2707,2709],{"className":869,"code":2708,"language":871,"meta":164,"style":164},"#pragma once\n\n#include \u003Cfunctional>\n#include \u003Cmujoco\u002Fmujoco.h>\n#include \u003CGLFW\u002Fglfw3.h>\n\n  \n\nclass Simulator {\n\npublic:\n\nSimulator() = default;\n\n~Simulator();\n\n  \n\n\u002F\u002F 禁止拷贝\n\nSimulator(const Simulator&) = delete;\n\nSimulator& operator=(const Simulator&) = delete;\n\n  \n\n\u002F** 加载模型，失败返回 false *\u002F\n\nbool load_model(const char* xml_path);\n\n  \n\n\u002F** 初始化窗口和可视化 *\u002F\n\nbool init_visual(int width, int height, const char* title);\n\n  \n\n\u002F** 设置相机跟踪的 body *\u002F\n\nvoid set_camera_track(const char* body_name, double distance = 2.0);\n\n  \n\n\u002F** 注册额外的按键回调（在 Backspace 重置之后调用） *\u002F\n\nvoid set_key_handler(std::function\u003Cvoid(int key, int act)> handler) { key_handler_ = handler; }\n\n  \n\n\u002F** 进入主循环，每帧调用 update(m, d) *\u002F\n\nvoid run(std::function\u003Cvoid(mjModel*, mjData*)> update = nullptr);\n\n  \n\n\u002F** 模型和数据访问 *\u002F\n\nmjModel* model() { return m_; }\n\nmjData* data() { return d_; }\n\n  \n\nprivate:\n\n\u002F\u002F 实例回调（由静态函数转发）\n\nvoid on_key(int key, int act);\n\nvoid on_mouse_button(int button, int act);\n\nvoid on_mouse_move(double xpos, double ypos);\n\nvoid on_scroll(double xoffset, double yoffset);\n\n  \n\n\u002F** 获取当前 viewport *\u002F\n\nmjrRect get_viewport();\n\n  \n\n\u002F\u002F 静态 GLFW 回调，通过 user pointer 转发到实例\n\nstatic void key_cb(GLFWwindow* w, int k, int s, int a, int m) {\n\nauto* self = static_cast\u003CSimulator*>(glfwGetWindowUserPointer(w));\n\nself->on_key(k, a);\n\n}\n\nstatic void mouse_cb(GLFWwindow* w, int b, int a, int m) {\n\nauto* self = static_cast\u003CSimulator*>(glfwGetWindowUserPointer(w));\n\nself->on_mouse_button(b, a);\n\n}\n\nstatic void move_cb(GLFWwindow* w, double x, double y) {\n\nauto* self = static_cast\u003CSimulator*>(glfwGetWindowUserPointer(w));\n\nself->on_mouse_move(x, y);\n\n}\n\nstatic void scroll_cb(GLFWwindow* w, double xo, double yo) {\n\nauto* self = static_cast\u003CSimulator*>(glfwGetWindowUserPointer(w));\n\nself->on_scroll(xo, yo);\n\n}\n\n  \n\nbool visual_ready_ = false;\n\n  \n\nmjModel* m_ = nullptr;\n\nmjData* d_ = nullptr;\n\n  \n\nmjvCamera cam_{};\n\nmjvOption opt_{};\n\nmjvScene scn_{};\n\nmjrContext con_{};\n\nGLFWwindow* window_ = nullptr;\n\n  \n\n\u002F\u002F 外部回调\n\nstd::function\u003Cvoid(int, int)> key_handler_;\n\n  \n\n\u002F\u002F 鼠标状态\n\nbool btn_left_ = false, btn_middle_ = false, btn_right_ = false;\n\ndouble lastx_ = 0, lasty_ = 0;\n\n  \n\n\u002F\u002F 暂停 & 拖拽加力\n\nbool paused_ = false;\n\nbool perturb_active_ = false;\n\nmjvPerturb pert_{};\n\n};\n",[83,2710,2711,2716,2720,2725,2730,2735,2739,2743,2747,2752,2756,2761,2765,2770,2774,2779,2783,2787,2791,2796,2800,2805,2809,2814,2818,2822,2826,2831,2835,2840,2844,2848,2852,2857,2861,2866,2870,2874,2878,2883,2887,2892,2896,2900,2904,2909,2913,2918,2922,2926,2930,2935,2939,2944,2948,2952,2956,2961,2965,2970,2974,2979,2983,2987,2991,2996,3000,3005,3009,3014,3018,3023,3027,3032,3036,3041,3045,3049,3053,3058,3062,3067,3071,3075,3079,3084,3088,3093,3097,3102,3106,3111,3115,3119,3123,3128,3132,3136,3140,3145,3149,3153,3157,3162,3166,3170,3174,3179,3183,3187,3191,3196,3200,3204,3208,3213,3217,3221,3225,3229,3233,3238,3242,3246,3250,3255,3259,3264,3268,3272,3276,3281,3285,3290,3294,3299,3303,3308,3312,3317,3321,3325,3329,3334,3338,3343,3347,3351,3355,3360,3364,3369,3373,3378,3382,3386,3390,3395,3399,3404,3408,3413,3417,3422,3426],{"__ignoreMap":164},[168,2712,2713],{"class":170,"line":171},[168,2714,2715],{},"#pragma once\n",[168,2717,2718],{"class":170,"line":178},[168,2719,228],{"emptyLinePlaceholder":227},[168,2721,2722],{"class":170,"line":192},[168,2723,2724],{},"#include \u003Cfunctional>\n",[168,2726,2727],{"class":170,"line":224},[168,2728,2729],{},"#include \u003Cmujoco\u002Fmujoco.h>\n",[168,2731,2732],{"class":170,"line":231},[168,2733,2734],{},"#include \u003CGLFW\u002Fglfw3.h>\n",[168,2736,2737],{"class":170,"line":237},[168,2738,228],{"emptyLinePlaceholder":227},[168,2740,2741],{"class":170,"line":270},[168,2742,1126],{},[168,2744,2745],{"class":170,"line":275},[168,2746,228],{"emptyLinePlaceholder":227},[168,2748,2749],{"class":170,"line":281},[168,2750,2751],{},"class Simulator {\n",[168,2753,2754],{"class":170,"line":290},[168,2755,228],{"emptyLinePlaceholder":227},[168,2757,2758],{"class":170,"line":299},[168,2759,2760],{},"public:\n",[168,2762,2763],{"class":170,"line":311},[168,2764,228],{"emptyLinePlaceholder":227},[168,2766,2767],{"class":170,"line":316},[168,2768,2769],{},"Simulator() = default;\n",[168,2771,2772],{"class":170,"line":322},[168,2773,228],{"emptyLinePlaceholder":227},[168,2775,2776],{"class":170,"line":345},[168,2777,2778],{},"~Simulator();\n",[168,2780,2781],{"class":170,"line":369},[168,2782,228],{"emptyLinePlaceholder":227},[168,2784,2785],{"class":170,"line":395},[168,2786,1126],{},[168,2788,2789],{"class":170,"line":400},[168,2790,228],{"emptyLinePlaceholder":227},[168,2792,2793],{"class":170,"line":406},[168,2794,2795],{},"\u002F\u002F 禁止拷贝\n",[168,2797,2798],{"class":170,"line":414},[168,2799,228],{"emptyLinePlaceholder":227},[168,2801,2802],{"class":170,"line":996},[168,2803,2804],{},"Simulator(const Simulator&) = delete;\n",[168,2806,2807],{"class":170,"line":1001},[168,2808,228],{"emptyLinePlaceholder":227},[168,2810,2811],{"class":170,"line":1007},[168,2812,2813],{},"Simulator& operator=(const Simulator&) = delete;\n",[168,2815,2816],{"class":170,"line":1013},[168,2817,228],{"emptyLinePlaceholder":227},[168,2819,2820],{"class":170,"line":1018},[168,2821,1126],{},[168,2823,2824],{"class":170,"line":1024},[168,2825,228],{"emptyLinePlaceholder":227},[168,2827,2828],{"class":170,"line":1030},[168,2829,2830],{},"\u002F** 加载模型，失败返回 false *\u002F\n",[168,2832,2833],{"class":170,"line":1035},[168,2834,228],{"emptyLinePlaceholder":227},[168,2836,2837],{"class":170,"line":1041},[168,2838,2839],{},"bool load_model(const char* xml_path);\n",[168,2841,2842],{"class":170,"line":1046},[168,2843,228],{"emptyLinePlaceholder":227},[168,2845,2846],{"class":170,"line":1052},[168,2847,1126],{},[168,2849,2850],{"class":170,"line":1058},[168,2851,228],{"emptyLinePlaceholder":227},[168,2853,2854],{"class":170,"line":1063},[168,2855,2856],{},"\u002F** 初始化窗口和可视化 *\u002F\n",[168,2858,2859],{"class":170,"line":1069},[168,2860,228],{"emptyLinePlaceholder":227},[168,2862,2863],{"class":170,"line":1074},[168,2864,2865],{},"bool init_visual(int width, int height, const char* title);\n",[168,2867,2868],{"class":170,"line":1080},[168,2869,228],{"emptyLinePlaceholder":227},[168,2871,2872],{"class":170,"line":1086},[168,2873,1126],{},[168,2875,2876],{"class":170,"line":1091},[168,2877,228],{"emptyLinePlaceholder":227},[168,2879,2880],{"class":170,"line":1274},[168,2881,2882],{},"\u002F** 设置相机跟踪的 body *\u002F\n",[168,2884,2885],{"class":170,"line":1280},[168,2886,228],{"emptyLinePlaceholder":227},[168,2888,2889],{"class":170,"line":1285},[168,2890,2891],{},"void set_camera_track(const char* body_name, double distance = 2.0);\n",[168,2893,2894],{"class":170,"line":1290},[168,2895,228],{"emptyLinePlaceholder":227},[168,2897,2898],{"class":170,"line":1295},[168,2899,1126],{},[168,2901,2902],{"class":170,"line":1300},[168,2903,228],{"emptyLinePlaceholder":227},[168,2905,2906],{"class":170,"line":1305},[168,2907,2908],{},"\u002F** 注册额外的按键回调（在 Backspace 重置之后调用） *\u002F\n",[168,2910,2911],{"class":170,"line":1311},[168,2912,228],{"emptyLinePlaceholder":227},[168,2914,2915],{"class":170,"line":1316},[168,2916,2917],{},"void set_key_handler(std::function\u003Cvoid(int key, int act)> handler) { key_handler_ = handler; }\n",[168,2919,2920],{"class":170,"line":1322},[168,2921,228],{"emptyLinePlaceholder":227},[168,2923,2924],{"class":170,"line":1327},[168,2925,1126],{},[168,2927,2928],{"class":170,"line":1333},[168,2929,228],{"emptyLinePlaceholder":227},[168,2931,2932],{"class":170,"line":1338},[168,2933,2934],{},"\u002F** 进入主循环，每帧调用 update(m, d) *\u002F\n",[168,2936,2937],{"class":170,"line":1344},[168,2938,228],{"emptyLinePlaceholder":227},[168,2940,2941],{"class":170,"line":1349},[168,2942,2943],{},"void run(std::function\u003Cvoid(mjModel*, mjData*)> update = nullptr);\n",[168,2945,2946],{"class":170,"line":1354},[168,2947,228],{"emptyLinePlaceholder":227},[168,2949,2950],{"class":170,"line":1359},[168,2951,1126],{},[168,2953,2954],{"class":170,"line":1365},[168,2955,228],{"emptyLinePlaceholder":227},[168,2957,2958],{"class":170,"line":1370},[168,2959,2960],{},"\u002F** 模型和数据访问 *\u002F\n",[168,2962,2963],{"class":170,"line":1376},[168,2964,228],{"emptyLinePlaceholder":227},[168,2966,2967],{"class":170,"line":1381},[168,2968,2969],{},"mjModel* model() { return m_; }\n",[168,2971,2972],{"class":170,"line":1386},[168,2973,228],{"emptyLinePlaceholder":227},[168,2975,2976],{"class":170,"line":1391},[168,2977,2978],{},"mjData* data() { return d_; }\n",[168,2980,2981],{"class":170,"line":1396},[168,2982,228],{"emptyLinePlaceholder":227},[168,2984,2985],{"class":170,"line":1401},[168,2986,1126],{},[168,2988,2989],{"class":170,"line":1407},[168,2990,228],{"emptyLinePlaceholder":227},[168,2992,2993],{"class":170,"line":1412},[168,2994,2995],{},"private:\n",[168,2997,2998],{"class":170,"line":1418},[168,2999,228],{"emptyLinePlaceholder":227},[168,3001,3002],{"class":170,"line":1423},[168,3003,3004],{},"\u002F\u002F 实例回调（由静态函数转发）\n",[168,3006,3007],{"class":170,"line":1428},[168,3008,228],{"emptyLinePlaceholder":227},[168,3010,3011],{"class":170,"line":1433},[168,3012,3013],{},"void on_key(int key, int act);\n",[168,3015,3016],{"class":170,"line":1439},[168,3017,228],{"emptyLinePlaceholder":227},[168,3019,3020],{"class":170,"line":1444},[168,3021,3022],{},"void on_mouse_button(int button, int act);\n",[168,3024,3025],{"class":170,"line":1450},[168,3026,228],{"emptyLinePlaceholder":227},[168,3028,3029],{"class":170,"line":1455},[168,3030,3031],{},"void on_mouse_move(double xpos, double ypos);\n",[168,3033,3034],{"class":170,"line":1460},[168,3035,228],{"emptyLinePlaceholder":227},[168,3037,3038],{"class":170,"line":1465},[168,3039,3040],{},"void on_scroll(double xoffset, double yoffset);\n",[168,3042,3043],{"class":170,"line":1470},[168,3044,228],{"emptyLinePlaceholder":227},[168,3046,3047],{"class":170,"line":1475},[168,3048,1126],{},[168,3050,3051],{"class":170,"line":1480},[168,3052,228],{"emptyLinePlaceholder":227},[168,3054,3055],{"class":170,"line":1485},[168,3056,3057],{},"\u002F** 获取当前 viewport *\u002F\n",[168,3059,3060],{"class":170,"line":1491},[168,3061,228],{"emptyLinePlaceholder":227},[168,3063,3064],{"class":170,"line":1496},[168,3065,3066],{},"mjrRect get_viewport();\n",[168,3068,3069],{"class":170,"line":1502},[168,3070,228],{"emptyLinePlaceholder":227},[168,3072,3073],{"class":170,"line":1507},[168,3074,1126],{},[168,3076,3077],{"class":170,"line":1513},[168,3078,228],{"emptyLinePlaceholder":227},[168,3080,3081],{"class":170,"line":1518},[168,3082,3083],{},"\u002F\u002F 静态 GLFW 回调，通过 user pointer 转发到实例\n",[168,3085,3086],{"class":170,"line":1523},[168,3087,228],{"emptyLinePlaceholder":227},[168,3089,3090],{"class":170,"line":1528},[168,3091,3092],{},"static void key_cb(GLFWwindow* w, int k, int s, int a, int m) {\n",[168,3094,3095],{"class":170,"line":1533},[168,3096,228],{"emptyLinePlaceholder":227},[168,3098,3099],{"class":170,"line":1538},[168,3100,3101],{},"auto* self = static_cast\u003CSimulator*>(glfwGetWindowUserPointer(w));\n",[168,3103,3104],{"class":170,"line":1543},[168,3105,228],{"emptyLinePlaceholder":227},[168,3107,3108],{"class":170,"line":1548},[168,3109,3110],{},"self->on_key(k, a);\n",[168,3112,3113],{"class":170,"line":1554},[168,3114,228],{"emptyLinePlaceholder":227},[168,3116,3117],{"class":170,"line":1559},[168,3118,1094],{},[168,3120,3121],{"class":170,"line":1565},[168,3122,228],{"emptyLinePlaceholder":227},[168,3124,3125],{"class":170,"line":1570},[168,3126,3127],{},"static void mouse_cb(GLFWwindow* w, int b, int a, int m) {\n",[168,3129,3130],{"class":170,"line":1575},[168,3131,228],{"emptyLinePlaceholder":227},[168,3133,3134],{"class":170,"line":1580},[168,3135,3101],{},[168,3137,3138],{"class":170,"line":1586},[168,3139,228],{"emptyLinePlaceholder":227},[168,3141,3142],{"class":170,"line":1591},[168,3143,3144],{},"self->on_mouse_button(b, a);\n",[168,3146,3147],{"class":170,"line":1597},[168,3148,228],{"emptyLinePlaceholder":227},[168,3150,3151],{"class":170,"line":1602},[168,3152,1094],{},[168,3154,3155],{"class":170,"line":1607},[168,3156,228],{"emptyLinePlaceholder":227},[168,3158,3159],{"class":170,"line":1612},[168,3160,3161],{},"static void move_cb(GLFWwindow* w, double x, double y) {\n",[168,3163,3164],{"class":170,"line":1618},[168,3165,228],{"emptyLinePlaceholder":227},[168,3167,3168],{"class":170,"line":1623},[168,3169,3101],{},[168,3171,3172],{"class":170,"line":1629},[168,3173,228],{"emptyLinePlaceholder":227},[168,3175,3176],{"class":170,"line":1634},[168,3177,3178],{},"self->on_mouse_move(x, y);\n",[168,3180,3181],{"class":170,"line":1640},[168,3182,228],{"emptyLinePlaceholder":227},[168,3184,3185],{"class":170,"line":1645},[168,3186,1094],{},[168,3188,3189],{"class":170,"line":1651},[168,3190,228],{"emptyLinePlaceholder":227},[168,3192,3193],{"class":170,"line":1656},[168,3194,3195],{},"static void scroll_cb(GLFWwindow* w, double xo, double yo) {\n",[168,3197,3198],{"class":170,"line":1662},[168,3199,228],{"emptyLinePlaceholder":227},[168,3201,3202],{"class":170,"line":1667},[168,3203,3101],{},[168,3205,3206],{"class":170,"line":1672},[168,3207,228],{"emptyLinePlaceholder":227},[168,3209,3210],{"class":170,"line":1677},[168,3211,3212],{},"self->on_scroll(xo, yo);\n",[168,3214,3215],{"class":170,"line":1683},[168,3216,228],{"emptyLinePlaceholder":227},[168,3218,3219],{"class":170,"line":1688},[168,3220,1094],{},[168,3222,3223],{"class":170,"line":1694},[168,3224,228],{"emptyLinePlaceholder":227},[168,3226,3227],{"class":170,"line":1699},[168,3228,1126],{},[168,3230,3231],{"class":170,"line":1705},[168,3232,228],{"emptyLinePlaceholder":227},[168,3234,3235],{"class":170,"line":1710},[168,3236,3237],{},"bool visual_ready_ = false;\n",[168,3239,3240],{"class":170,"line":1716},[168,3241,228],{"emptyLinePlaceholder":227},[168,3243,3244],{"class":170,"line":1721},[168,3245,1126],{},[168,3247,3248],{"class":170,"line":1727},[168,3249,228],{"emptyLinePlaceholder":227},[168,3251,3252],{"class":170,"line":1732},[168,3253,3254],{},"mjModel* m_ = nullptr;\n",[168,3256,3257],{"class":170,"line":1737},[168,3258,228],{"emptyLinePlaceholder":227},[168,3260,3261],{"class":170,"line":1742},[168,3262,3263],{},"mjData* d_ = nullptr;\n",[168,3265,3266],{"class":170,"line":1748},[168,3267,228],{"emptyLinePlaceholder":227},[168,3269,3270],{"class":170,"line":1753},[168,3271,1126],{},[168,3273,3274],{"class":170,"line":1759},[168,3275,228],{"emptyLinePlaceholder":227},[168,3277,3278],{"class":170,"line":1764},[168,3279,3280],{},"mjvCamera cam_{};\n",[168,3282,3283],{"class":170,"line":1769},[168,3284,228],{"emptyLinePlaceholder":227},[168,3286,3287],{"class":170,"line":1774},[168,3288,3289],{},"mjvOption opt_{};\n",[168,3291,3292],{"class":170,"line":1780},[168,3293,228],{"emptyLinePlaceholder":227},[168,3295,3296],{"class":170,"line":1785},[168,3297,3298],{},"mjvScene scn_{};\n",[168,3300,3301],{"class":170,"line":1790},[168,3302,228],{"emptyLinePlaceholder":227},[168,3304,3305],{"class":170,"line":1795},[168,3306,3307],{},"mjrContext con_{};\n",[168,3309,3310],{"class":170,"line":1800},[168,3311,228],{"emptyLinePlaceholder":227},[168,3313,3314],{"class":170,"line":1805},[168,3315,3316],{},"GLFWwindow* window_ = nullptr;\n",[168,3318,3319],{"class":170,"line":1810},[168,3320,228],{"emptyLinePlaceholder":227},[168,3322,3323],{"class":170,"line":1815},[168,3324,1126],{},[168,3326,3327],{"class":170,"line":1821},[168,3328,228],{"emptyLinePlaceholder":227},[168,3330,3331],{"class":170,"line":1826},[168,3332,3333],{},"\u002F\u002F 外部回调\n",[168,3335,3336],{"class":170,"line":1832},[168,3337,228],{"emptyLinePlaceholder":227},[168,3339,3340],{"class":170,"line":1837},[168,3341,3342],{},"std::function\u003Cvoid(int, int)> key_handler_;\n",[168,3344,3345],{"class":170,"line":1842},[168,3346,228],{"emptyLinePlaceholder":227},[168,3348,3349],{"class":170,"line":1847},[168,3350,1126],{},[168,3352,3353],{"class":170,"line":1853},[168,3354,228],{"emptyLinePlaceholder":227},[168,3356,3357],{"class":170,"line":1858},[168,3358,3359],{},"\u002F\u002F 鼠标状态\n",[168,3361,3362],{"class":170,"line":1864},[168,3363,228],{"emptyLinePlaceholder":227},[168,3365,3366],{"class":170,"line":1869},[168,3367,3368],{},"bool btn_left_ = false, btn_middle_ = false, btn_right_ = false;\n",[168,3370,3371],{"class":170,"line":1875},[168,3372,228],{"emptyLinePlaceholder":227},[168,3374,3375],{"class":170,"line":1880},[168,3376,3377],{},"double lastx_ = 0, lasty_ = 0;\n",[168,3379,3380],{"class":170,"line":1885},[168,3381,228],{"emptyLinePlaceholder":227},[168,3383,3384],{"class":170,"line":1890},[168,3385,1126],{},[168,3387,3388],{"class":170,"line":1895},[168,3389,228],{"emptyLinePlaceholder":227},[168,3391,3392],{"class":170,"line":1900},[168,3393,3394],{},"\u002F\u002F 暂停 & 拖拽加力\n",[168,3396,3397],{"class":170,"line":1906},[168,3398,228],{"emptyLinePlaceholder":227},[168,3400,3401],{"class":170,"line":1911},[168,3402,3403],{},"bool paused_ = false;\n",[168,3405,3406],{"class":170,"line":1917},[168,3407,228],{"emptyLinePlaceholder":227},[168,3409,3410],{"class":170,"line":1922},[168,3411,3412],{},"bool perturb_active_ = false;\n",[168,3414,3415],{"class":170,"line":1927},[168,3416,228],{"emptyLinePlaceholder":227},[168,3418,3419],{"class":170,"line":1932},[168,3420,3421],{},"mjvPerturb pert_{};\n",[168,3423,3424],{"class":170,"line":1938},[168,3425,228],{"emptyLinePlaceholder":227},[168,3427,3428],{"class":170,"line":1943},[168,3429,3430],{},"};\n",[860,3432,3434],{"id":3433},"_3-使用官方的simulator拥有官方的simulator界面按钮","3. 使用官方的simulator（拥有官方的simulator界面按钮）",[3436,3437,3438,3453],"ol",{},[801,3439,3440,3441,3444,3445,3448,3449],{},"将simulator文件夹下的所有文件复制到自己的工程文件下面",[83,3442,3443],{},"src\u002F","  除了",[83,3446,3447],{},"cmake\u002F"," 文件夹之外的文件\n",[154,3450],{"alt":3451,"src":3452},"598","\u002Ffongtszho.web\u002Fwiki-assets\u002Fpictures-pasted-image-20260721231329.png",[801,3454,3455,3456],{},"更改",[83,3457,3458],{},"CMakeListst.txt",[159,3460,3463],{"className":3461,"code":3462,"language":709,"meta":164,"style":164},"language-cmake shiki shiki-themes github-light github-dark","cmake_minimum_required(VERSION 3.20)\nproject(工程名 LANGUAGES CXX)\n\n# C++17\nset(CMAKE_CXX_STANDARD 17)\nset(CMAKE_CXX_STANDARD_REQUIRED ON)\nset(CMAKE_EXPORT_COMPILE_COMMANDS ON)\n# MuJoCo 安装目录（此处替换为自己的安装目录）\nset(MUJOCO_PATH \"\u002Fhome\u002Fxiaofang\u002FApplications\u002Fmujoco-3.7.0\")\n\ninclude_directories(\n    ${MUJOCO_PATH}\u002Finclude\n)\n\nlink_directories(\n    ${MUJOCO_PATH}\u002Flib\n)\n\nset(MUJOCO_LIB\n    ${MUJOCO_PATH}\u002Flib\u002Flibmujoco.so\n)\n\n# 官方 Simulator 源码\nfile(GLOB SIMULATOR_SRC\n${CMAKE_CURRENT_SOURCE_DIR}\u002Fsrc\u002Fsimulator\u002F*.cc\n)\n# 用户控制代码\nset(USER_SRC\nsrc\u002Fcontrol\u002Fcontrol.cpp\nsrc\u002Fcontrol\u002Fpid.cpp\nsrc\u002Fsensors\u002Fimu.cpp\n)\n\n# 最终程序\nadd_executable(WheelLeg\n${SIMULATOR_SRC}\n${USER_SRC}\n)\n\ntarget_include_directories(WheelLeg PRIVATE\n\n${CMAKE_SOURCE_DIR}\u002Finclude\n${CMAKE_CURRENT_SOURCE_DIR}\u002Fsrc\u002Fsimulator\n${MUJOCO_PATH}\u002Finclude\n\n)\n\ntarget_link_libraries(WheelLeg\n\n${MUJOCO_LIB}\nglfw\nGL\nGLU\n)\n",[83,3464,3465,3470,3475,3479,3484,3489,3494,3499,3504,3509,3513,3518,3523,3528,3532,3537,3542,3546,3550,3555,3560,3564,3568,3573,3578,3583,3587,3592,3597,3602,3607,3612,3616,3620,3625,3630,3635,3640,3644,3648,3653,3657,3662,3667,3672,3676,3680,3684,3689,3693,3698,3703,3708,3713],{"__ignoreMap":164},[168,3466,3467],{"class":170,"line":171},[168,3468,3469],{},"cmake_minimum_required(VERSION 3.20)\n",[168,3471,3472],{"class":170,"line":178},[168,3473,3474],{},"project(工程名 LANGUAGES CXX)\n",[168,3476,3477],{"class":170,"line":192},[168,3478,228],{"emptyLinePlaceholder":227},[168,3480,3481],{"class":170,"line":224},[168,3482,3483],{},"# C++17\n",[168,3485,3486],{"class":170,"line":231},[168,3487,3488],{},"set(CMAKE_CXX_STANDARD 17)\n",[168,3490,3491],{"class":170,"line":237},[168,3492,3493],{},"set(CMAKE_CXX_STANDARD_REQUIRED ON)\n",[168,3495,3496],{"class":170,"line":270},[168,3497,3498],{},"set(CMAKE_EXPORT_COMPILE_COMMANDS ON)\n",[168,3500,3501],{"class":170,"line":275},[168,3502,3503],{},"# MuJoCo 安装目录（此处替换为自己的安装目录）\n",[168,3505,3506],{"class":170,"line":281},[168,3507,3508],{},"set(MUJOCO_PATH \"\u002Fhome\u002Fxiaofang\u002FApplications\u002Fmujoco-3.7.0\")\n",[168,3510,3511],{"class":170,"line":290},[168,3512,228],{"emptyLinePlaceholder":227},[168,3514,3515],{"class":170,"line":299},[168,3516,3517],{},"include_directories(\n",[168,3519,3520],{"class":170,"line":311},[168,3521,3522],{},"    ${MUJOCO_PATH}\u002Finclude\n",[168,3524,3525],{"class":170,"line":316},[168,3526,3527],{},")\n",[168,3529,3530],{"class":170,"line":322},[168,3531,228],{"emptyLinePlaceholder":227},[168,3533,3534],{"class":170,"line":345},[168,3535,3536],{},"link_directories(\n",[168,3538,3539],{"class":170,"line":369},[168,3540,3541],{},"    ${MUJOCO_PATH}\u002Flib\n",[168,3543,3544],{"class":170,"line":395},[168,3545,3527],{},[168,3547,3548],{"class":170,"line":400},[168,3549,228],{"emptyLinePlaceholder":227},[168,3551,3552],{"class":170,"line":406},[168,3553,3554],{},"set(MUJOCO_LIB\n",[168,3556,3557],{"class":170,"line":414},[168,3558,3559],{},"    ${MUJOCO_PATH}\u002Flib\u002Flibmujoco.so\n",[168,3561,3562],{"class":170,"line":996},[168,3563,3527],{},[168,3565,3566],{"class":170,"line":1001},[168,3567,228],{"emptyLinePlaceholder":227},[168,3569,3570],{"class":170,"line":1007},[168,3571,3572],{},"# 官方 Simulator 源码\n",[168,3574,3575],{"class":170,"line":1013},[168,3576,3577],{},"file(GLOB SIMULATOR_SRC\n",[168,3579,3580],{"class":170,"line":1018},[168,3581,3582],{},"${CMAKE_CURRENT_SOURCE_DIR}\u002Fsrc\u002Fsimulator\u002F*.cc\n",[168,3584,3585],{"class":170,"line":1024},[168,3586,3527],{},[168,3588,3589],{"class":170,"line":1030},[168,3590,3591],{},"# 用户控制代码\n",[168,3593,3594],{"class":170,"line":1035},[168,3595,3596],{},"set(USER_SRC\n",[168,3598,3599],{"class":170,"line":1041},[168,3600,3601],{},"src\u002Fcontrol\u002Fcontrol.cpp\n",[168,3603,3604],{"class":170,"line":1046},[168,3605,3606],{},"src\u002Fcontrol\u002Fpid.cpp\n",[168,3608,3609],{"class":170,"line":1052},[168,3610,3611],{},"src\u002Fsensors\u002Fimu.cpp\n",[168,3613,3614],{"class":170,"line":1058},[168,3615,3527],{},[168,3617,3618],{"class":170,"line":1063},[168,3619,228],{"emptyLinePlaceholder":227},[168,3621,3622],{"class":170,"line":1069},[168,3623,3624],{},"# 最终程序\n",[168,3626,3627],{"class":170,"line":1074},[168,3628,3629],{},"add_executable(WheelLeg\n",[168,3631,3632],{"class":170,"line":1080},[168,3633,3634],{},"${SIMULATOR_SRC}\n",[168,3636,3637],{"class":170,"line":1086},[168,3638,3639],{},"${USER_SRC}\n",[168,3641,3642],{"class":170,"line":1091},[168,3643,3527],{},[168,3645,3646],{"class":170,"line":1274},[168,3647,228],{"emptyLinePlaceholder":227},[168,3649,3650],{"class":170,"line":1280},[168,3651,3652],{},"target_include_directories(WheelLeg PRIVATE\n",[168,3654,3655],{"class":170,"line":1285},[168,3656,228],{"emptyLinePlaceholder":227},[168,3658,3659],{"class":170,"line":1290},[168,3660,3661],{},"${CMAKE_SOURCE_DIR}\u002Finclude\n",[168,3663,3664],{"class":170,"line":1295},[168,3665,3666],{},"${CMAKE_CURRENT_SOURCE_DIR}\u002Fsrc\u002Fsimulator\n",[168,3668,3669],{"class":170,"line":1300},[168,3670,3671],{},"${MUJOCO_PATH}\u002Finclude\n",[168,3673,3674],{"class":170,"line":1305},[168,3675,228],{"emptyLinePlaceholder":227},[168,3677,3678],{"class":170,"line":1311},[168,3679,3527],{},[168,3681,3682],{"class":170,"line":1316},[168,3683,228],{"emptyLinePlaceholder":227},[168,3685,3686],{"class":170,"line":1322},[168,3687,3688],{},"target_link_libraries(WheelLeg\n",[168,3690,3691],{"class":170,"line":1327},[168,3692,228],{"emptyLinePlaceholder":227},[168,3694,3695],{"class":170,"line":1333},[168,3696,3697],{},"${MUJOCO_LIB}\n",[168,3699,3700],{"class":170,"line":1338},[168,3701,3702],{},"glfw\n",[168,3704,3705],{"class":170,"line":1344},[168,3706,3707],{},"GL\n",[168,3709,3710],{"class":170,"line":1349},[168,3711,3712],{},"GLU\n",[168,3714,3715],{"class":170,"line":1354},[168,3716,3527],{},[3436,3718,3719],{"start":192},[801,3720,3721],{},"更改官方main.cc",[159,3723,3725],{"className":869,"code":3724,"language":871,"meta":164,"style":164},"\nvoid PhysicsLoop(mj::Simulate& sim) {\n...\n    #在这里面加入用户循环控制程序入口 例如\n    carController.Main_Control_Update(m, d);\n    mj_step(m, d);\n...\n}\n\nvoid PhysicsThread(mj::Simulate* sim, const char* filename){\n...\n\nmj_forward(m, d);\n\n\u002F\u002F在这里加入用户控制器的初始化\ncarController.Init(m);\n\n...\n}\n\n\n",[83,3726,3727,3731,3736,3741,3746,3751,3756,3760,3764,3768,3773,3777,3781,3786,3790,3795,3800,3804,3808],{"__ignoreMap":164},[168,3728,3729],{"class":170,"line":171},[168,3730,228],{"emptyLinePlaceholder":227},[168,3732,3733],{"class":170,"line":178},[168,3734,3735],{},"void PhysicsLoop(mj::Simulate& sim) {\n",[168,3737,3738],{"class":170,"line":192},[168,3739,3740],{},"...\n",[168,3742,3743],{"class":170,"line":224},[168,3744,3745],{},"    #在这里面加入用户循环控制程序入口 例如\n",[168,3747,3748],{"class":170,"line":231},[168,3749,3750],{},"    carController.Main_Control_Update(m, d);\n",[168,3752,3753],{"class":170,"line":237},[168,3754,3755],{},"    mj_step(m, d);\n",[168,3757,3758],{"class":170,"line":270},[168,3759,3740],{},[168,3761,3762],{"class":170,"line":275},[168,3763,1094],{},[168,3765,3766],{"class":170,"line":281},[168,3767,228],{"emptyLinePlaceholder":227},[168,3769,3770],{"class":170,"line":290},[168,3771,3772],{},"void PhysicsThread(mj::Simulate* sim, const char* filename){\n",[168,3774,3775],{"class":170,"line":299},[168,3776,3740],{},[168,3778,3779],{"class":170,"line":311},[168,3780,228],{"emptyLinePlaceholder":227},[168,3782,3783],{"class":170,"line":316},[168,3784,3785],{},"mj_forward(m, d);\n",[168,3787,3788],{"class":170,"line":322},[168,3789,228],{"emptyLinePlaceholder":227},[168,3791,3792],{"class":170,"line":345},[168,3793,3794],{},"\u002F\u002F在这里加入用户控制器的初始化\n",[168,3796,3797],{"class":170,"line":369},[168,3798,3799],{},"carController.Init(m);\n",[168,3801,3802],{"class":170,"line":395},[168,3803,228],{"emptyLinePlaceholder":227},[168,3805,3806],{"class":170,"line":400},[168,3807,3740],{},[168,3809,3810],{"class":170,"line":406},[168,3811,1094],{},[3436,3813,3814],{"start":224},[801,3815,3816,3817,3820],{},"启动方式 （此处使用fish）\n新建 ",[83,3818,3819],{},"scripts\u002Frun.fish"," 写入以下内容",[159,3822,3824],{"className":161,"code":3823,"language":163,"meta":164,"style":164},"#!\u002Fusr\u002Fbin\u002Fenv fish\ncd ..\u002Fbuild\necho \"========== Build ==========\"\n\nmake\n\nor begin\n\necho \"编译失败\"\n\nexit 1\n\nend\n\necho \"========== Run ==========\"\n#启动程序，设置环境变量以启用 NVIDIA GPU 的渲染加速\n\nenv \\\n\n__NV_PRIME_RENDER_OFFLOAD=1 \\\n\n__GLX_VENDOR_LIBRARY_NAME=nvidia \\\n\nMUJOCO_GL=egl \\\n\n..\u002Fbuild\u002FWheelLeg ..\u002Fmodels\u002Fmodel.xml\n\n",[83,3825,3826,3831,3838,3846,3850,3855,3859,3867,3871,3878,3882,3890,3894,3899,3903,3910,3915,3919,3927,3931,3939,3943,3950,3954,3961,3965],{"__ignoreMap":164},[168,3827,3828],{"class":170,"line":171},[168,3829,3830],{"class":174},"#!\u002Fusr\u002Fbin\u002Fenv fish\n",[168,3832,3833,3835],{"class":170,"line":178},[168,3834,284],{"class":202},[168,3836,3837],{"class":185}," ..\u002Fbuild\n",[168,3839,3840,3843],{"class":170,"line":192},[168,3841,3842],{"class":202},"echo",[168,3844,3845],{"class":185}," \"========== Build ==========\"\n",[168,3847,3848],{"class":170,"line":224},[168,3849,228],{"emptyLinePlaceholder":227},[168,3851,3852],{"class":170,"line":231},[168,3853,3854],{"class":181},"make\n",[168,3856,3857],{"class":170,"line":237},[168,3858,228],{"emptyLinePlaceholder":227},[168,3860,3861,3864],{"class":170,"line":270},[168,3862,3863],{"class":181},"or",[168,3865,3866],{"class":185}," begin\n",[168,3868,3869],{"class":170,"line":275},[168,3870,228],{"emptyLinePlaceholder":227},[168,3872,3873,3875],{"class":170,"line":281},[168,3874,3842],{"class":202},[168,3876,3877],{"class":185}," \"编译失败\"\n",[168,3879,3880],{"class":170,"line":290},[168,3881,228],{"emptyLinePlaceholder":227},[168,3883,3884,3887],{"class":170,"line":299},[168,3885,3886],{"class":202},"exit",[168,3888,3889],{"class":202}," 1\n",[168,3891,3892],{"class":170,"line":311},[168,3893,228],{"emptyLinePlaceholder":227},[168,3895,3896],{"class":170,"line":316},[168,3897,3898],{"class":325},"end\n",[168,3900,3901],{"class":170,"line":322},[168,3902,228],{"emptyLinePlaceholder":227},[168,3904,3905,3907],{"class":170,"line":345},[168,3906,3842],{"class":202},[168,3908,3909],{"class":185}," \"========== Run ==========\"\n",[168,3911,3912],{"class":170,"line":369},[168,3913,3914],{"class":174},"#启动程序，设置环境变量以启用 NVIDIA GPU 的渲染加速\n",[168,3916,3917],{"class":170,"line":395},[168,3918,228],{"emptyLinePlaceholder":227},[168,3920,3921,3924],{"class":170,"line":400},[168,3922,3923],{"class":181},"env",[168,3925,3926],{"class":202}," \\\n",[168,3928,3929],{"class":170,"line":406},[168,3930,228],{"emptyLinePlaceholder":227},[168,3932,3933,3936],{"class":170,"line":414},[168,3934,3935],{"class":329},"__NV_PRIME_RENDER_OFFLOAD=1 ",[168,3937,3938],{"class":202},"\\\n",[168,3940,3941],{"class":170,"line":996},[168,3942,228],{"emptyLinePlaceholder":227},[168,3944,3945,3948],{"class":170,"line":1001},[168,3946,3947],{"class":329},"__GLX_VENDOR_LIBRARY_NAME=nvidia ",[168,3949,3938],{"class":202},[168,3951,3952],{"class":170,"line":1007},[168,3953,228],{"emptyLinePlaceholder":227},[168,3955,3956,3959],{"class":170,"line":1013},[168,3957,3958],{"class":329},"MUJOCO_GL=egl ",[168,3960,3938],{"class":202},[168,3962,3963],{"class":170,"line":1018},[168,3964,228],{"emptyLinePlaceholder":227},[168,3966,3967,3970],{"class":170,"line":1024},[168,3968,3969],{"class":329},"..\u002Fbuild\u002FWheelLeg ",[168,3971,3972],{"class":185},"..\u002Fmodels\u002Fmodel.xml\n",[140,3974,3975],{"id":3975},"问题专项",[860,3977,3979],{"id":3978},"一解决方针启动卡顿问题","一、解决方针启动卡顿问题",[10,3981,3982],{},"（此处使用fish，bash等其他shell同理）",[798,3984,3985,3988],{},[801,3986,3987],{},"原因:没有使用nvidia显卡启动仿真",[801,3989,3990],{},"新建run.fish在里面写运行程序的脚本",[159,3992,3994],{"className":161,"code":3993,"language":163,"meta":164,"style":164},"#!\u002Fusr\u002Fbin\u002Fenv fish\nenv \\\n\n__NV_PRIME_RENDER_OFFLOAD=1 \\\n\n__GLX_VENDOR_LIBRARY_NAME=nvidia \\\n\nMUJOCO_GL=glx \\\n\n..\u002Fbuild\u002Fdemo编译后生成的可执行文件\n",[83,3995,3996,4000,4006,4010,4016,4020,4026,4030,4037,4041],{"__ignoreMap":164},[168,3997,3998],{"class":170,"line":171},[168,3999,3830],{"class":174},[168,4001,4002,4004],{"class":170,"line":178},[168,4003,3923],{"class":181},[168,4005,3926],{"class":202},[168,4007,4008],{"class":170,"line":192},[168,4009,228],{"emptyLinePlaceholder":227},[168,4011,4012,4014],{"class":170,"line":224},[168,4013,3935],{"class":329},[168,4015,3938],{"class":202},[168,4017,4018],{"class":170,"line":231},[168,4019,228],{"emptyLinePlaceholder":227},[168,4021,4022,4024],{"class":170,"line":237},[168,4023,3947],{"class":329},[168,4025,3938],{"class":202},[168,4027,4028],{"class":170,"line":270},[168,4029,228],{"emptyLinePlaceholder":227},[168,4031,4032,4035],{"class":170,"line":275},[168,4033,4034],{"class":329},"MUJOCO_GL=glx ",[168,4036,3938],{"class":202},[168,4038,4039],{"class":170,"line":281},[168,4040,228],{"emptyLinePlaceholder":227},[168,4042,4043],{"class":170,"line":290},[168,4044,4045],{"class":329},"..\u002Fbuild\u002Fdemo编译后生成的可执行文件\n",[4047,4048,4049],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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":164,"searchDepth":224,"depth":224,"links":4051},[4052,4058,4061],{"id":39,"depth":178,"text":40,"children":4053},[4054,4055,4057],{"id":142,"depth":192,"text":143},{"id":481,"depth":192,"text":4056},"1.2 使用 Python pip 安装",{"id":594,"depth":192,"text":595},{"id":791,"depth":178,"text":792,"children":4059},[4060],{"id":795,"depth":192,"text":796},{"id":853,"depth":178,"text":854,"children":4062},[4063,4068],{"id":857,"depth":192,"text":858,"children":4064},[4065,4066,4067],{"id":862,"depth":224,"text":863},{"id":895,"depth":224,"text":896},{"id":3433,"depth":224,"text":3434},{"id":3975,"depth":192,"text":3975,"children":4069},[4070],{"id":3978,"depth":224,"text":3979},"Robotics","2026-08-19","记录学习Mujoco的过程",false,"md",{},"\u002Fwiki\u002Frobotics\u002Fmujoco\u002Fmujoco-28267cc",{"title":5,"description":4073},"wiki\u002Frobotics\u002Fmujoco\u002Fmujoco-28267cc",[4071],"wiki","LEfWDKC0Jw8Kesro5Rwz_s1q8L3S1WlYhOmowiYc24I",[4084,4253,5736,5750,5902,7865],{"id":4085,"title":4086,"body":4087,"category":4244,"date":4245,"description":4246,"draft":4074,"extension":4075,"featured":4074,"meta":4247,"navigation":227,"path":4248,"seo":4249,"stem":4250,"tags":4251,"type":4081,"__hash__":4252},"content\u002Fwiki\u002Fai-agent\u002Fclaude-code-install.md","Claude Code Install",{"type":7,"value":4088,"toc":4240},[4089,4092,4107,4111,4114,4136,4139,4212,4216,4225,4228,4237],[10,4090,4091],{},"资料",[4093,4094,4095],"blockquote",{},[10,4096,4097,4102],{},[14,4098,4101],{"href":4099,"rel":4100},"https:\u002F\u002Fwww.runoob.com\u002Fclaude-code\u002Fclaude-code-install.html",[18],"菜鸟教程 - Claude Code 安装",[14,4103,4106],{"href":4104,"rel":4105},"https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fzh-CN\u002Fquickstart#native-install-recommended",[18],"Claude Code 官方文档 - 快速开始",[37,4108,4110],{"id":4109},"一安装-claude","一、安装 claude",[10,4112,4113],{},"使用官方命令行安装",[159,4115,4117],{"className":161,"code":4116,"language":163,"meta":164,"style":164},"curl -fsSL https:\u002F\u002Fclaude.ai\u002Finstall.sh | bash\n",[83,4118,4119],{"__ignoreMap":164},[168,4120,4121,4124,4127,4130,4133],{"class":170,"line":171},[168,4122,4123],{"class":181},"curl",[168,4125,4126],{"class":202}," -fsSL",[168,4128,4129],{"class":185}," https:\u002F\u002Fclaude.ai\u002Finstall.sh",[168,4131,4132],{"class":325}," |",[168,4134,4135],{"class":181}," bash\n",[10,4137,4138],{},"安装完成后若使用fish,需要添加`PATH",[159,4140,4142],{"className":161,"code":4141,"language":163,"meta":164,"style":164},"# install path\nls ~\u002F.local\u002Fbin\n# add claude path to fish\nfish_add_path ~\u002F.local\u002Fbin\n# update fish\nsource ~\u002F.config\u002Ffish\u002Fconfig.fish\n#check version\nclaude --version\n#显示\n2.1.150 (Claude Code)\n",[83,4143,4144,4149,4157,4162,4169,4174,4181,4186,4194,4199],{"__ignoreMap":164},[168,4145,4146],{"class":170,"line":171},[168,4147,4148],{"class":174},"# install path\n",[168,4150,4151,4154],{"class":170,"line":178},[168,4152,4153],{"class":181},"ls",[168,4155,4156],{"class":185}," ~\u002F.local\u002Fbin\n",[168,4158,4159],{"class":170,"line":192},[168,4160,4161],{"class":174},"# add claude path to fish\n",[168,4163,4164,4167],{"class":170,"line":224},[168,4165,4166],{"class":181},"fish_add_path",[168,4168,4156],{"class":185},[168,4170,4171],{"class":170,"line":231},[168,4172,4173],{"class":174},"# update fish\n",[168,4175,4176,4178],{"class":170,"line":237},[168,4177,467],{"class":202},[168,4179,4180],{"class":185}," ~\u002F.config\u002Ffish\u002Fconfig.fish\n",[168,4182,4183],{"class":170,"line":270},[168,4184,4185],{"class":174},"#check version\n",[168,4187,4188,4191],{"class":170,"line":275},[168,4189,4190],{"class":181},"claude",[168,4192,4193],{"class":202}," --version\n",[168,4195,4196],{"class":170,"line":281},[168,4197,4198],{"class":174},"#显示\n",[168,4200,4201,4204,4207,4210],{"class":170,"line":290},[168,4202,4203],{"class":181},"2.1.150",[168,4205,4206],{"class":329}," (Claude ",[168,4208,4209],{"class":185},"Code",[168,4211,3527],{"class":329},[37,4213,4215],{"id":4214},"安装cc-switch","安装CC switch",[4093,4217,4218],{},[10,4219,4220],{},[14,4221,4224],{"href":4222,"rel":4223},"https:\u002F\u002Fccswitch.io\u002Fzh\u002F",[18],"CC Switch 官网",[10,4226,4227],{},"deepseek接入cc",[4093,4229,4230],{},[10,4231,4232],{},[14,4233,4236],{"href":4234,"rel":4235},"https:\u002F\u002Fapi-docs.deepseek.com\u002Fzh-cn\u002Fquick_start\u002Fagent_integrations\u002Fclaude_code",[18],"DeepSeek API 文档 - Claude Code 集成",[4047,4238,4239],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":164,"searchDepth":224,"depth":224,"links":4241},[4242,4243],{"id":4109,"depth":178,"text":4110},{"id":4214,"depth":178,"text":4215},"AI Agent","2026-08-01","安装Claude Code 简易方式",{},"\u002Fwiki\u002Fai-agent\u002Fclaude-code-install",{"title":4086,"description":4246},"wiki\u002Fai-agent\u002Fclaude-code-install",[4244],"wFuq035X-fOKCL1To6aFxYsDdbGqlfD3LI4AO2_wi4c",{"id":4254,"title":4255,"body":4256,"category":5728,"date":4072,"description":5729,"draft":4074,"extension":4075,"featured":4074,"meta":5730,"navigation":227,"path":5731,"seo":5732,"stem":5733,"tags":5734,"type":4081,"__hash__":5735},"content\u002Fwiki\u002Flinux\u002Fniri-dms-using-clue\u002Fdms-keys.md","DMS keys",{"type":7,"value":4257,"toc":5716},[4258,4263,4306,4310,4436,4439,4443,4662,4666,4815,4819,5155,5159,5311,5315,5444,5448,5616,5620,5650,5652,5656],[4259,4260,4262],"h1",{"id":4261},"niri-dms-自定义快捷键指南","🎹 niri + DMS 自定义快捷键指南",[4093,4264,4265,4271],{},[10,4266,4267,4268,47],{},"💡 ",[44,4269,4270],{},"提示",[798,4272,4273,4288,4295],{},[801,4274,4275,4276,4279,4280,4283,4284,4287],{},"配置中的 ",[83,4277,4278],{},"Mod"," 与 ",[83,4281,4282],{},"Super"," 等效，默认对应键盘 ",[44,4285,4286],{},"Win 键","。",[801,4289,4290,4291,4294],{},"所有快捷键已按你提供的 ",[83,4292,4293],{},"binds {}"," 区块逐行解析，无默认值假设。",[801,4296,4297,4298,4301,4302,4305],{},"修改保存后，按 ",[83,4299,4300],{},"Mod+Shift+R"," 或终端执行 ",[83,4303,4304],{},"niri msg action reload-config"," 热重载。",[37,4307,4309],{"id":4308},"️-核心键位变更提示-你的自定义布局","⚠️ 核心键位变更提示 (你的自定义布局)",[49,4311,4312,4326],{},[52,4313,4314],{},[55,4315,4316,4320,4323],{},[58,4317,4319],{"align":4318},"left","原默认行为",[58,4321,4322],{"align":4318},"你的新绑定",[58,4324,4325],{"align":4318},"说明",[71,4327,4328,4346,4364,4382,4400,4418],{},[55,4329,4330,4336,4341],{},[76,4331,4332,4335],{"align":4318},[83,4333,4334],{},"Mod+K"," 焦点上移",[76,4337,4338],{"align":4318},[83,4339,4340],{},"focus-workspace-down",[76,4342,4343],{"align":4318},[44,4344,4345],{},"K 现用于切换下一工作区",[55,4347,4348,4354,4359],{},[76,4349,4350,4353],{"align":4318},[83,4351,4352],{},"Mod+U"," 工作区下移",[76,4355,4356],{"align":4318},[83,4357,4358],{},"focus-window-up",[76,4360,4361],{"align":4318},[44,4362,4363],{},"U 现用于同列窗口上移",[55,4365,4366,4372,4377],{},[76,4367,4368,4371],{"align":4318},[83,4369,4370],{},"Mod+H"," 焦点左移",[76,4373,4374],{"align":4318},[83,4375,4376],{},"focus-window-down",[76,4378,4379],{"align":4318},[44,4380,4381],{},"H 现用于同列窗口下移",[55,4383,4384,4390,4395],{},[76,4385,4386,4389],{"align":4318},[83,4387,4388],{},"Mod+J"," 焦点下移",[76,4391,4392],{"align":4318},[83,4393,4394],{},"focus-column-left",[76,4396,4397],{"align":4318},[44,4398,4399],{},"J 现用于焦点左移列",[55,4401,4402,4408,4413],{},[76,4403,4404,4407],{"align":4318},[83,4405,4406],{},"Mod+Shift+H"," 列左移",[76,4409,4410],{"align":4318},[83,4411,4412],{},"move-window-down",[76,4414,4415],{"align":4318},[44,4416,4417],{},"Shift+H 现用于窗口下移",[55,4419,4420,4426,4431],{},[76,4421,4422,4425],{"align":4318},[83,4423,4424],{},"Mod+Shift+J"," 窗口下移",[76,4427,4428],{"align":4318},[83,4429,4430],{},"move-column-left",[76,4432,4433],{"align":4318},[44,4434,4435],{},"Shift+J 现用于整列左移",[4437,4438],"hr",{},[37,4440,4442],{"id":4441},"️-系统与-dms-桌面交互","🖥️ 系统与 DMS 桌面交互",[49,4444,4445,4458],{},[52,4446,4447],{},[55,4448,4449,4452,4455],{},[58,4450,4451],{"align":4318},"快捷键",[58,4453,4454],{"align":4318},"功能",[58,4456,4457],{"align":4318},"备注",[71,4459,4460,4473,4486,4499,4512,4525,4538,4551,4564,4577,4590,4607,4623,4636,4649],{},[55,4461,4462,4467,4470],{},[76,4463,4464],{"align":4318},[83,4465,4466],{},"Mod+Space",[76,4468,4469],{"align":4318},"应用启动器 (Spotlight)",[76,4471,4472],{"align":4318},"全局搜索与启动应用",[55,4474,4475,4480,4483],{},[76,4476,4477],{"align":4318},[83,4478,4479],{},"Mod+,",[76,4481,4482],{"align":4318},"系统设置",[76,4484,4485],{"align":4318},"打开 DMS 配置面板",[55,4487,4488,4493,4496],{},[76,4489,4490],{"align":4318},[83,4491,4492],{},"Mod+N",[76,4494,4495],{"align":4318},"通知中心",[76,4497,4498],{"align":4318},"查看\u002F清除桌面通知",[55,4500,4501,4506,4509],{},[76,4502,4503],{"align":4318},[83,4504,4505],{},"Mod+V",[76,4507,4508],{"align":4318},"剪贴板管理器",[76,4510,4511],{"align":4318},"历史粘贴板记录",[55,4513,4514,4519,4522],{},[76,4515,4516],{"align":4318},[83,4517,4518],{},"Mod+Shift+N",[76,4520,4521],{"align":4318},"记事本",[76,4523,4524],{"align":4318},"快速临时笔记",[55,4526,4527,4532,4535],{},[76,4528,4529],{"align":4318},[83,4530,4531],{},"Mod+Shift+W",[76,4533,4534],{"align":4318},"窗口规则编辑器",[76,4536,4537],{"align":4318},"自定义应用浮动\u002F固定策略",[55,4539,4540,4545,4548],{},[76,4541,4542],{"align":4318},[83,4543,4544],{},"Mod+Y",[76,4546,4547],{"align":4318},"壁纸管理",[76,4549,4550],{"align":4318},"浏览与切换壁纸",[55,4552,4553,4558,4561],{},[76,4554,4555],{"align":4318},[83,4556,4557],{},"Super+X",[76,4559,4560],{"align":4318},"电源菜单",[76,4562,4563],{"align":4318},"关机\u002F重启\u002F注销\u002F休眠",[55,4565,4566,4571,4574],{},[76,4567,4568],{"align":4318},[83,4569,4570],{},"Mod+Shift+E",[76,4572,4573],{"align":4318},"退出 niri",[76,4575,4576],{"align":4318},"结束当前图形会话",[55,4578,4579,4584,4587],{},[76,4580,4581],{"align":4318},[83,4582,4583],{},"Mod+Alt+L",[76,4585,4586],{"align":4318},"锁屏",[76,4588,4589],{"align":4318},"锁定屏幕并待机",[55,4591,4592,4601,4604],{},[76,4593,4594,4597,4598],{"align":4318},[83,4595,4596],{},"Mod+M"," \u002F ",[83,4599,4600],{},"Ctrl+Alt+Del",[76,4602,4603],{"align":4318},"任务管理器",[76,4605,4606],{"align":4318},"进程监控与资源管理",[55,4608,4609,4617,4620],{},[76,4610,4611,4597,4614],{"align":4318},[83,4612,4613],{},"Mod+D",[83,4615,4616],{},"Mod+Tab",[76,4618,4619],{"align":4318},"总览视图 (Overview)",[76,4621,4622],{"align":4318},"查看所有工作区与窗口缩略图",[55,4624,4625,4630,4633],{},[76,4626,4627],{"align":4318},[83,4628,4629],{},"Mod+Esc",[76,4631,4632],{"align":4318},"快捷键拦截开关",[76,4634,4635],{"align":4318},"允许当前应用独占组合键",[55,4637,4638,4643,4646],{},[76,4639,4640],{"align":4318},[83,4641,4642],{},"Mod+Shift+\u002F",[76,4644,4645],{"align":4318},"显示快捷键提示",[76,4647,4648],{"align":4318},"屏幕浮层显示可用快捷键",[55,4650,4651,4656,4659],{},[76,4652,4653],{"align":4318},[83,4654,4655],{},"Ctrl+Shift+R",[76,4657,4658],{"align":4318},"重命名工作区",[76,4660,4661],{"align":4318},"自定义工作区名称标签",[37,4663,4665],{"id":4664},"工作区-workspace-导航","📂 工作区 (Workspace) 导航",[49,4667,4668,4678],{},[52,4669,4670],{},[55,4671,4672,4674,4676],{},[58,4673,4451],{"align":4318},[58,4675,4454],{"align":4318},[58,4677,4457],{"align":4318},[71,4679,4680,4697,4716,4736,4751,4766,4780,4798],{},[55,4681,4682,4691,4694],{},[76,4683,4684,4687,4688],{"align":4318},[83,4685,4686],{},"Mod+1"," ~ ",[83,4689,4690],{},"9",[76,4692,4693],{"align":4318},"跳转至指定工作区",[76,4695,4696],{"align":4318},"快速切换 1~9 号",[55,4698,4699,4710,4713],{},[76,4700,4701,4597,4704,4597,4707],{"align":4318},[83,4702,4703],{},"Mod+I",[83,4705,4706],{},"PageUp",[83,4708,4709],{},"滚轮上",[76,4711,4712],{"align":4318},"上一工作区",[76,4714,4715],{"align":4318},"纵向向上滚动",[55,4717,4718,4728,4731],{},[76,4719,4720,4597,4722,4597,4725],{"align":4318},[83,4721,4334],{},[83,4723,4724],{},"PageDown",[83,4726,4727],{},"滚轮下",[76,4729,4730],{"align":4318},"下一工作区",[76,4732,4733],{"align":4318},[44,4734,4735],{},"⚠️ 你的自定义：K 切工作区",[55,4737,4738,4745,4748],{},[76,4739,4740,4687,4743],{"align":4318},[83,4741,4742],{},"Mod+Shift+1",[83,4744,4690],{},[76,4746,4747],{"align":4318},"当前列移至指定工作区",[76,4749,4750],{"align":4318},"批量迁移窗口组",[55,4752,4753,4760,4763],{},[76,4754,4755,4597,4758],{"align":4318},[83,4756,4757],{},"Mod+Shift+I",[83,4759,4706],{},[76,4761,4762],{"align":4318},"工作区顺序上移",[76,4764,4765],{"align":4318},"调整纵向排列",[55,4767,4768,4775,4778],{},[76,4769,4770,4597,4773],{"align":4318},[83,4771,4772],{},"Mod+Shift+K",[83,4774,4724],{},[76,4776,4777],{"align":4318},"工作区顺序下移",[76,4779,4765],{"align":4318},[55,4781,4782,4792,4795],{},[76,4783,4784,4597,4787,4597,4790],{"align":4318},[83,4785,4786],{},"Mod+Ctrl+I",[83,4788,4789],{},"Up",[83,4791,4709],{},[76,4793,4794],{"align":4318},"列移至上一工作区",[76,4796,4797],{"align":4318},"带窗口跨区移动",[55,4799,4800,4810,4813],{},[76,4801,4802,4597,4805,4597,4808],{"align":4318},[83,4803,4804],{},"Mod+Ctrl+K",[83,4806,4807],{},"Down",[83,4809,4727],{},[76,4811,4812],{"align":4318},"列移至下一工作区",[76,4814,4797],{"align":4318},[37,4816,4818],{"id":4817},"窗口与列-column-布局控制","🪟 窗口与列 (Column) 布局控制",[49,4820,4821,4831],{},[52,4822,4823],{},[55,4824,4825,4827,4829],{},[58,4826,4451],{"align":4318},[58,4828,4454],{"align":4318},[58,4830,4457],{"align":4318},[71,4832,4833,4846,4859,4872,4885,4898,4911,4924,4936,4949,4962,4975,4988,5001,5014,5030,5043,5059,5074,5089,5104,5117,5129,5142],{},[55,4834,4835,4840,4843],{},[76,4836,4837],{"align":4318},[83,4838,4839],{},"Mod+Q",[76,4841,4842],{"align":4318},"关闭当前窗口",[76,4844,4845],{"align":4318},"安全退出",[55,4847,4848,4853,4856],{},[76,4849,4850],{"align":4318},[83,4851,4852],{},"Mod+Shift+T",[76,4854,4855],{"align":4318},"切换浮动\u002F平铺",[76,4857,4858],{"align":4318},"脱离平铺自由拖拽",[55,4860,4861,4866,4869],{},[76,4862,4863],{"align":4318},[83,4864,4865],{},"Mod+Shift+V",[76,4867,4868],{"align":4318},"焦点切换浮\u002F平",[76,4870,4871],{"align":4318},"快速跳转两类窗口",[55,4873,4874,4879,4882],{},[76,4875,4876],{"align":4318},[83,4877,4878],{},"Mod+Shift+F",[76,4880,4881],{"align":4318},"窗口全屏",[76,4883,4884],{"align":4318},"切换焦点窗口全屏",[55,4886,4887,4892,4895],{},[76,4888,4889],{"align":4318},[83,4890,4891],{},"Mod+F",[76,4893,4894],{"align":4318},"最大化当前列",[76,4896,4897],{"align":4318},"列占满垂直空间",[55,4899,4900,4905,4908],{},[76,4901,4902],{"align":4318},[83,4903,4904],{},"Mod+W",[76,4906,4907],{"align":4318},"切换列标签页模式",[76,4909,4910],{"align":4318},"多窗口堆叠为 Tab",[55,4912,4913,4918,4921],{},[76,4914,4915],{"align":4318},[83,4916,4917],{},"Mod+R",[76,4919,4920],{"align":4318},"切换预设列宽",[76,4922,4923],{"align":4318},"循环 30%\u002F50%\u002F70%",[55,4925,4926,4930,4933],{},[76,4927,4928],{"align":4318},[83,4929,4300],{},[76,4931,4932],{"align":4318},"切换预设窗口高度",[76,4934,4935],{"align":4318},"循环高度比例",[55,4937,4938,4943,4946],{},[76,4939,4940],{"align":4318},[83,4941,4942],{},"Mod+C",[76,4944,4945],{"align":4318},"居中当前列",[76,4947,4948],{"align":4318},"水平居中",[55,4950,4951,4956,4959],{},[76,4952,4953],{"align":4318},[83,4954,4955],{},"Mod+Ctrl+C",[76,4957,4958],{"align":4318},"居中可见列",[76,4960,4961],{"align":4318},"所有可见列整体居中",[55,4963,4964,4969,4972],{},[76,4965,4966],{"align":4318},[83,4967,4968],{},"Mod+Ctrl+Home",[76,4970,4971],{"align":4318},"列移至最左",[76,4973,4974],{"align":4318},"工作区起始位置",[55,4976,4977,4982,4985],{},[76,4978,4979],{"align":4318},[83,4980,4981],{},"Mod+Ctrl+End",[76,4983,4984],{"align":4318},"列移至最右",[76,4986,4987],{"align":4318},"工作区末尾位置",[55,4989,4990,4995,4998],{},[76,4991,4992],{"align":4318},[83,4993,4994],{},"Mod+Ctrl+F",[76,4996,4997],{"align":4318},"列宽扩展至可用",[76,4999,5000],{"align":4318},"填满左右空白",[55,5002,5003,5008,5011],{},[76,5004,5005],{"align":4318},[83,5006,5007],{},"Mod+Ctrl+R",[76,5009,5010],{"align":4318},"重置窗口高度",[76,5012,5013],{"align":4318},"恢复默认比例",[55,5015,5016,5024,5027],{},[76,5017,5018,4597,5021],{"align":4318},[83,5019,5020],{},"Mod+[",[83,5022,5023],{},"]",[76,5025,5026],{"align":4318},"窗口吞入\u002F排出列",[76,5028,5029],{"align":4318},"合并到左\u002F右相邻列",[55,5031,5032,5037,5040],{},[76,5033,5034],{"align":4318},[83,5035,5036],{},"Mod+.",[76,5038,5039],{"align":4318},"窗口独立成新列",[76,5041,5042],{"align":4318},"从当前列拆分",[55,5044,5045,5053,5056],{},[76,5046,5047,4597,5050],{"align":4318},[83,5048,5049],{},"Mod+=",[83,5051,5052],{},"-",[76,5054,5055],{"align":4318},"列宽 ±10%",[76,5057,5058],{"align":4318},"精细调整宽度",[55,5060,5061,5068,5071],{},[76,5062,5063,4597,5066],{"align":4318},[83,5064,5065],{},"Mod+Shift+=",[83,5067,5052],{},[76,5069,5070],{"align":4318},"窗口高度 ±10%",[76,5072,5073],{"align":4318},"精细调整高度",[55,5075,5076,5083,5086],{},[76,5077,5078,4597,5081],{"align":4318},[83,5079,5080],{},"Mod+Shift+Left",[83,5082,4709],{},[76,5084,5085],{"align":4318},"整列左移",[76,5087,5088],{"align":4318},"列及内部窗口左移",[55,5090,5091,5098,5101],{},[76,5092,5093,4597,5096],{"align":4318},[83,5094,5095],{},"Mod+Shift+Right",[83,5097,4727],{},[76,5099,5100],{"align":4318},"整列右移",[76,5102,5103],{"align":4318},"列及内部窗口右移",[55,5105,5106,5111,5114],{},[76,5107,5108],{"align":4318},[83,5109,5110],{},"Mod+Shift+Down",[76,5112,5113],{"align":4318},"窗口在列内下移",[76,5115,5116],{"align":4318},"调整同列上下顺序",[55,5118,5119,5124,5127],{},[76,5120,5121],{"align":4318},[83,5122,5123],{},"Mod+Shift+Up",[76,5125,5126],{"align":4318},"窗口在列内上移",[76,5128,5116],{"align":4318},[55,5130,5131,5136,5139],{},[76,5132,5133],{"align":4318},[83,5134,5135],{},"Mod+Ctrl+Shift+滚轮上\u002F下",[76,5137,5138],{"align":4318},"滚轮快移左\u002F右列",[76,5140,5141],{"align":4318},"加速列位置调整",[55,5143,5144,5149,5152],{},[76,5145,5146],{"align":4318},[83,5147,5148],{},"Mod+Ctrl+滚轮左\u002F右",[76,5150,5151],{"align":4318},"滚轮移左\u002F右列",[76,5153,5154],{"align":4318},"基础列移动",[37,5156,5158],{"id":5157},"焦点与导航-你的自定义映射","🎯 焦点与导航 (你的自定义映射)",[49,5160,5161,5171],{},[52,5162,5163],{},[55,5164,5165,5167,5169],{},[58,5166,4451],{"align":4318},[58,5168,4454],{"align":4318},[58,5170,4457],{"align":4318},[71,5172,5173,5187,5200,5214,5233,5248,5260,5272,5285,5298],{},[55,5174,5175,5179,5182],{},[76,5176,5177],{"align":4318},[83,5178,4370],{},[76,5180,5181],{"align":4318},"焦点下移窗口",[76,5183,5184],{"align":4318},[44,5185,5186],{},"⚠️ 你的自定义",[55,5188,5189,5193,5196],{},[76,5190,5191],{"align":4318},[83,5192,4352],{},[76,5194,5195],{"align":4318},"焦点上移窗口",[76,5197,5198],{"align":4318},[44,5199,5186],{},[55,5201,5202,5206,5209],{},[76,5203,5204],{"align":4318},[83,5205,4388],{},[76,5207,5208],{"align":4318},"焦点左移列",[76,5210,5211],{"align":4318},[44,5212,5213],{},"️ 你的自定义",[55,5215,5216,5227,5230],{},[76,5217,5218,4597,5221,4597,5224],{"align":4318},[83,5219,5220],{},"Mod+L",[83,5222,5223],{},"Right",[83,5225,5226],{},"滚轮右",[76,5228,5229],{"align":4318},"焦点右移列",[76,5231,5232],{"align":4318},"向右切换列焦点",[55,5234,5235,5243,5245],{},[76,5236,5237,4597,5240],{"align":4318},[83,5238,5239],{},"Mod+Left",[83,5241,5242],{},"滚轮左",[76,5244,5208],{"align":4318},[76,5246,5247],{"align":4318},"向左切换列焦点",[55,5249,5250,5255,5257],{},[76,5251,5252],{"align":4318},[83,5253,5254],{},"Mod+Down",[76,5256,5181],{"align":4318},[76,5258,5259],{"align":4318},"同列向下切换",[55,5261,5262,5267,5269],{},[76,5263,5264],{"align":4318},[83,5265,5266],{},"Mod+Up",[76,5268,5195],{"align":4318},[76,5270,5271],{"align":4318},"同列向上切换",[55,5273,5274,5279,5282],{},[76,5275,5276],{"align":4318},[83,5277,5278],{},"Mod+Home",[76,5280,5281],{"align":4318},"焦点跳至第一列",[76,5283,5284],{"align":4318},"快速回顶部",[55,5286,5287,5292,5295],{},[76,5288,5289],{"align":4318},[83,5290,5291],{},"Mod+End",[76,5293,5294],{"align":4318},"焦点跳至最后一列",[76,5296,5297],{"align":4318},"快速跳尾部",[55,5299,5300,5305,5308],{},[76,5301,5302],{"align":4318},[83,5303,5304],{},"Mod+Shift+滚轮上\u002F下",[76,5306,5307],{"align":4318},"滚轮快切左\u002F右列焦点",[76,5309,5310],{"align":4318},"加速焦点移动",[37,5312,5314],{"id":5313},"️-多显示器-monitor-控制","🖥️ 多显示器 (Monitor) 控制",[49,5316,5317,5327],{},[52,5318,5319],{},[55,5320,5321,5323,5325],{},[58,5322,4451],{"align":4318},[58,5324,4454],{"align":4318},[58,5326,4457],{"align":4318},[71,5328,5329,5342,5356,5369,5383,5399,5414,5429],{},[55,5330,5331,5336,5339],{},[76,5332,5333],{"align":4318},[83,5334,5335],{},"Mod+Ctrl+Left",[76,5337,5338],{"align":4318},"焦点切至左侧显示器",[76,5340,5341],{"align":4318},"跨屏跳转",[55,5343,5344,5349,5352],{},[76,5345,5346],{"align":4318},[83,5347,5348],{},"Mod+Ctrl+H",[76,5350,5351],{"align":4318},"焦点切至下方显示器",[76,5353,5354],{"align":4318},[44,5355,5186],{},[55,5357,5358,5362,5365],{},[76,5359,5360],{"align":4318},[83,5361,4804],{},[76,5363,5364],{"align":4318},"焦点切至上方显示器",[76,5366,5367],{"align":4318},[44,5368,5186],{},[55,5370,5371,5378,5381],{},[76,5372,5373,4597,5376],{"align":4318},[83,5374,5375],{},"Mod+Ctrl+L",[83,5377,5223],{},[76,5379,5380],{"align":4318},"焦点切至右侧显示器",[76,5382,5341],{"align":4318},[55,5384,5385,5393,5396],{},[76,5386,5387,4597,5390],{"align":4318},[83,5388,5389],{},"Mod+Shift+Ctrl+Left",[83,5391,5392],{},"H",[76,5394,5395],{"align":4318},"列移至左\u002F下显示器",[76,5397,5398],{"align":4318},"窗口跨屏移动",[55,5400,5401,5409,5412],{},[76,5402,5403,4597,5406],{"align":4318},[83,5404,5405],{},"Mod+Shift+Ctrl+Right",[83,5407,5408],{},"L",[76,5410,5411],{"align":4318},"列移至右\u002F右显示器",[76,5413,5398],{"align":4318},[55,5415,5416,5424,5427],{},[76,5417,5418,4597,5421],{"align":4318},[83,5419,5420],{},"Mod+Shift+Ctrl+Up",[83,5422,5423],{},"K",[76,5425,5426],{"align":4318},"列移至上\u002F上显示器",[76,5428,5398],{"align":4318},[55,5430,5431,5439,5442],{},[76,5432,5433,4597,5436],{"align":4318},[83,5434,5435],{},"Mod+Shift+Ctrl+Down",[83,5437,5438],{},"J",[76,5440,5441],{"align":4318},"列移至下\u002F下显示器",[76,5443,5398],{"align":4318},[37,5445,5447],{"id":5446},"截图媒体与硬件按键","📸 截图、媒体与硬件按键",[49,5449,5450,5460],{},[52,5451,5452],{},[55,5453,5454,5456,5458],{},[58,5455,4451],{"align":4318},[58,5457,4454],{"align":4318},[58,5459,4457],{"align":4318},[71,5461,5462,5478,5494,5510,5523,5536,5549,5562,5575,5588,5603],{},[55,5463,5464,5472,5475],{},[76,5465,5466,4597,5469],{"align":4318},[83,5467,5468],{},"Print",[83,5470,5471],{},"XF86Launch1",[76,5473,5474],{"align":4318},"区域截图",[76,5476,5477],{"align":4318},"鼠标框选截图",[55,5479,5480,5488,5491],{},[76,5481,5482,4597,5485],{"align":4318},[83,5483,5484],{},"Ctrl+Print",[83,5486,5487],{},"Ctrl+XF86Launch1",[76,5489,5490],{"align":4318},"截取当前屏幕",[76,5492,5493],{"align":4318},"全屏截图",[55,5495,5496,5504,5507],{},[76,5497,5498,4597,5501],{"align":4318},[83,5499,5500],{},"Alt+Print",[83,5502,5503],{},"Alt+XF86Launch1",[76,5505,5506],{"align":4318},"截取当前窗口",[76,5508,5509],{"align":4318},"仅焦点窗口",[55,5511,5512,5517,5520],{},[76,5513,5514],{"align":4318},[83,5515,5516],{},"Mod+Shift+P",[76,5518,5519],{"align":4318},"关闭显示器电源",[76,5521,5522],{"align":4318},"硬件级息屏",[55,5524,5525,5530,5533],{},[76,5526,5527],{"align":4318},[83,5528,5529],{},"XF86AudioMute",[76,5531,5532],{"align":4318},"系统静音",[76,5534,5535],{"align":4318},"全局音频静音",[55,5537,5538,5543,5546],{},[76,5539,5540],{"align":4318},[83,5541,5542],{},"XF86AudioMicMute",[76,5544,5545],{"align":4318},"麦克风静音",[76,5547,5548],{"align":4318},"硬件麦克风开关",[55,5550,5551,5556,5559],{},[76,5552,5553],{"align":4318},[83,5554,5555],{},"XF86AudioLower\u002FRaiseVolume",[76,5557,5558],{"align":4318},"系统音量 ±3%",[76,5560,5561],{"align":4318},"调整主音量",[55,5563,5564,5569,5572],{},[76,5565,5566],{"align":4318},[83,5567,5568],{},"Ctrl+XF86AudioLower\u002FRaiseVolume",[76,5570,5571],{"align":4318},"媒体音量 ±3%",[76,5573,5574],{"align":4318},"调整播放器音量",[55,5576,5577,5582,5585],{},[76,5578,5579],{"align":4318},[83,5580,5581],{},"XF86AudioPlay\u002FPause",[76,5583,5584],{"align":4318},"播放 \u002F 暂停",[76,5586,5587],{"align":4318},"媒体控制",[55,5589,5590,5598,5601],{},[76,5591,5592,4597,5595],{"align":4318},[83,5593,5594],{},"XF86AudioNext",[83,5596,5597],{},"Prev",[76,5599,5600],{"align":4318},"下一曲 \u002F 上一曲",[76,5602,5587],{"align":4318},[55,5604,5605,5610,5613],{},[76,5606,5607],{"align":4318},[83,5608,5609],{},"XF86MonBrightnessUp\u002FDown",[76,5611,5612],{"align":4318},"屏幕亮度 ±5%",[76,5614,5615],{"align":4318},"调整显示器亮度",[37,5617,5619],{"id":5618},"️-开发与快捷启动","🛠️ 开发与快捷启动",[49,5621,5622,5632],{},[52,5623,5624],{},[55,5625,5626,5628,5630],{},[58,5627,4451],{"align":4318},[58,5629,4454],{"align":4318},[58,5631,4457],{"align":4318},[71,5633,5634],{},[55,5635,5636,5641,5644],{},[76,5637,5638],{"align":4318},[83,5639,5640],{},"Mod+T",[76,5642,5643],{"align":4318},"打开终端",[76,5645,5646,5647],{"align":4318},"默认启动 ",[83,5648,5649],{},"kitty",[4437,5651],{},[140,5653,5655],{"id":5654},"使用建议","📌 使用建议",[3436,5657,5658,5668,5684,5690],{},[801,5659,5660,5663,5664,5667],{},[44,5661,5662],{},"肌肉记忆重塑","：你的 ",[83,5665,5666],{},"H\u002FJ\u002FK\u002FU"," 布局已完全自定义，建议打印此表贴于显示器旁，3~5 天即可形成新反射。",[801,5669,5670,5673,5674,5676,5677,5679,5680,5683],{},[44,5671,5672],{},"冲突排查","：若 ",[83,5675,4334],{}," 或 ",[83,5678,4370],{}," 无响应，检查输入法（IBus\u002FFcitx）是否占用了相同组合键。可在输入法设置中关闭全局快捷键，或临时改用 ",[83,5681,5682],{},"Mod+Ctrl+字母"," 避开。",[801,5685,5686,5689],{},[44,5687,5688],{},"滚轮辅助","：niri 原生支持滚轮切换工作区\u002F列，适合快速浏览；精细窗口操作建议保留键盘。",[801,5691,5692,5695,5696,86,5699,5676,5702,5705,5706,5709,5710,5712,5713,4287],{},[44,5693,5694],{},"持续迭代","：后续如需绑定 ",[83,5697,5698],{},"msim",[83,5700,5701],{},"ros2",[83,5703,5704],{},"yazi"," 快捷启动，直接在 ",[83,5707,5708],{},"~\u002F.config\u002Fniri\u002Fconfig.kdl"," 的 ",[83,5711,4293],{}," 末尾追加：",[83,5714,5715],{},"Mod+新键 { spawn \"你的命令\"; }",{"title":164,"searchDepth":224,"depth":224,"links":5717},[5718,5719,5720,5721,5722,5723,5724,5725],{"id":4308,"depth":178,"text":4309},{"id":4441,"depth":178,"text":4442},{"id":4664,"depth":178,"text":4665},{"id":4817,"depth":178,"text":4818},{"id":5157,"depth":178,"text":5158},{"id":5313,"depth":178,"text":5314},{"id":5446,"depth":178,"text":5447},{"id":5618,"depth":178,"text":5619,"children":5726},[5727],{"id":5654,"depth":192,"text":5655},"Linux","DMS 快捷键",{},"\u002Fwiki\u002Flinux\u002Fniri-dms-using-clue\u002Fdms-keys",{"title":4255,"description":5729},"wiki\u002Flinux\u002Fniri-dms-using-clue\u002Fdms-keys",[5728],"pl82cOt2TJPmkJ3dgQCVIBinL8jbtgoN_CG_G_gYQy4",{"id":5737,"title":5738,"body":5739,"category":5728,"date":4072,"description":5743,"draft":4074,"extension":4075,"featured":4074,"meta":5744,"navigation":227,"path":5745,"seo":5746,"stem":5747,"tags":5748,"type":4081,"__hash__":5749},"content\u002Fwiki\u002Flinux\u002Fgit-6d8bf7c.md","Git使用方法",{"type":7,"value":5740,"toc":5741},[],{"title":164,"searchDepth":224,"depth":224,"links":5742},[],"Git仓库的简单使用方法",{},"\u002Fwiki\u002Flinux\u002Fgit-6d8bf7c",{"title":5738,"description":5743},"wiki\u002Flinux\u002Fgit-6d8bf7c",[5728],"LbyDd4lBEpIhIw8HOPEWR3dv9Gwr1ADtIN7FuMigvIE",{"id":5751,"title":5752,"body":5753,"category":5728,"date":4245,"description":5895,"draft":4074,"extension":4075,"featured":4074,"meta":5896,"navigation":227,"path":5897,"seo":5898,"stem":5899,"tags":5900,"type":4081,"__hash__":5901},"content\u002Fwiki\u002Flinux\u002Fyazi-d6f0b09.md","Yazi食用方法",{"type":7,"value":5754,"toc":5891},[5755,5759,5763,5806,5810],[4259,5756,5758],{"id":5757},"yazi简易使用方式","🦆yazi简易使用方式",[37,5760,5762],{"id":5761},"一yazi操作类","一、yazi操作类",[49,5764,5765,5776],{},[52,5766,5767],{},[55,5768,5769,5772,5774],{},[58,5770,5771],{"align":4318},"操作",[58,5773,4451],{"align":4318},[58,5775],{},[71,5777,5778,5794],{},[55,5779,5780,5783,5792],{},[76,5781,5782],{"align":4318},"打开yazi",[76,5784,5785,5788,5789,5791],{"align":4318},[83,5786,5787],{},"y","（或者",[83,5790,5704],{},"）",[76,5793],{},[55,5795,5796,5799,5804],{},[76,5797,5798],{"align":4318},"关闭yazi",[76,5800,5801],{"align":4318},[83,5802,5803],{},"q",[76,5805],{},[37,5807,5809],{"id":5808},"二文件操作类","二、文件操作类",[49,5811,5812,5822],{},[52,5813,5814],{},[55,5815,5816,5818,5820],{},[58,5817,5771],{"align":4318},[58,5819,4451],{"align":4318},[58,5821],{},[71,5823,5824,5837,5850,5864,5877],{},[55,5825,5826,5831,5835],{},[76,5827,5828],{"align":4318},[44,5829,5830],{},"创建文件",[76,5832,5833],{"align":4318},[83,5834,14],{},[76,5836],{},[55,5838,5839,5844,5848],{},[76,5840,5841],{"align":4318},[44,5842,5843],{},"复制文件",[76,5845,5846],{"align":4318},[83,5847,5787],{},[76,5849],{},[55,5851,5852,5857,5862],{},[76,5853,5854],{"align":4318},[44,5855,5856],{},"剪贴文件",[76,5858,5859],{"align":4318},[83,5860,5861],{},"x",[76,5863],{},[55,5865,5866,5871,5875],{},[76,5867,5868],{"align":4318},[44,5869,5870],{},"粘贴文件",[76,5872,5873],{"align":4318},[83,5874,10],{},[76,5876],{},[55,5878,5879,5884,5889],{},[76,5880,5881],{"align":4318},[44,5882,5883],{},"查找文件",[76,5885,5886],{"align":4318},[83,5887,5888],{},"z",[76,5890],{},{"title":164,"searchDepth":224,"depth":224,"links":5892},[5893,5894],{"id":5761,"depth":178,"text":5762},{"id":5808,"depth":178,"text":5809},"最美味的食材往往有着最朴素的烹饪方法",{},"\u002Fwiki\u002Flinux\u002Fyazi-d6f0b09",{"title":5752,"description":5895},"wiki\u002Flinux\u002Fyazi-d6f0b09",[5728],"B5Ck4m6PCAxllBEUvqxiZMYvr_hcx9GVI6vTJqMCWRs",{"id":5903,"title":5904,"body":5905,"category":5728,"date":4245,"description":7858,"draft":4074,"extension":4075,"featured":4074,"meta":7859,"navigation":227,"path":7860,"seo":7861,"stem":7862,"tags":7863,"type":4081,"__hash__":7864},"content\u002Fwiki\u002Flinux\u002Flinux-1f4000d.md","我的Linux踩坑记",{"type":7,"value":5906,"toc":7822},[5907,5912,5916,5922,5925,5928,5934,5938,5941,5945,6011,6015,6080,6086,6090,6096,6100,6107,6111,6114,6121,6157,6161,6181,6186,6297,6302,6305,6308,6315,6350,6353,6824,6828,6853,6858,6863,6866,6872,6878,6881,6887,6892,6894,6897,6902,6906,6910,6917,6921,6928,6932,6938,7020,7026,7029,7033,7039,7042,7046,7416,7420,7458,7554,7594,7598,7602,7606,7616,7619,7625,7630,7633,7670,7672,7702,7706,7713,7717,7721,7732,7819],[37,5908,5910],{"id":5909},"kubuntu系列",[44,5911,5909],{},[140,5913,5915],{"id":5914},"_1安装软件","1.安装软件",[10,5917,5918],{},[154,5919],{"alt":5920,"src":5921},"738","https:\u002F\u002Fsdutvincirobot.feishu.cn\u002Fspace\u002Fapi\u002Fbox\u002Fstream\u002Fdownload\u002Fasynccode\u002F?code=NzBhYzgzOTMwOTBlYjViZjM5Mzk2MWNhZTBhNDRhMzRfWHp2Q3RqYU1wUWUzZmo4Skk5Njk4c2Q3WGQ4ZVcyTklfVG9rZW46Q3piUWJGQmJTb3RoYUN4QnpqTmNwRUVqbmJoXzE3ODQ2NDc0NDU6MTc4NDY1MTA0NV9WNA&add_watermark=true&scene_type=CCM",[10,5923,5924],{},"用 gdebi-gtk",[10,5926,5927],{},"卸载软件：",[10,5929,5930],{},[154,5931],{"alt":5932,"src":5933},"612","https:\u002F\u002Fsdutvincirobot.feishu.cn\u002Fspace\u002Fapi\u002Fbox\u002Fstream\u002Fdownload\u002Fasynccode\u002F?code=NjY2MjJiMTczNWY0NWUwZTNkMWU1NDU2OWNmODYzYjNfdTBQWmZPZ3VtVDU4WG1XaGZpSGVFN2pDRUpXaG9oRHVfVG9rZW46TXBDbWJVbVBnb2pEVHp4bHRVaWMzQ0JGbjRBXzE3ODQ2NDc0NDU6MTc4NDY1MTA0NV9WNA&add_watermark=true&scene_type=CCM",[140,5935,5937],{"id":5936},"_2代理问题","2.代理问题",[10,5939,5940],{},"（clash开隧道模式，记得开服务模式，直接解决）",[140,5942,5944],{"id":5943},"_3root权限访问文件夹","3.root权限访问文件夹",[159,5946,5950],{"className":5947,"code":5948,"language":5949,"meta":164,"style":164},"language-Bash shiki shiki-themes github-light github-dark","sudo nautilus\n#更改root密码：\nsudo passwd root\n#进入root：\nsu -    \n#输入密码：666    \n#退出root：\nsu user_name\nexit\n","Bash",[83,5951,5952,5959,5964,5974,5979,5989,5994,5999,6006],{"__ignoreMap":164},[168,5953,5954,5956],{"class":170,"line":171},[168,5955,182],{"class":181},[168,5957,5958],{"class":185}," nautilus\n",[168,5960,5961],{"class":170,"line":178},[168,5962,5963],{"class":174},"#更改root密码：\n",[168,5965,5966,5968,5971],{"class":170,"line":192},[168,5967,182],{"class":181},[168,5969,5970],{"class":185}," passwd",[168,5972,5973],{"class":185}," root\n",[168,5975,5976],{"class":170,"line":224},[168,5977,5978],{"class":174},"#进入root：\n",[168,5980,5981,5984,5987],{"class":170,"line":231},[168,5982,5983],{"class":181},"su",[168,5985,5986],{"class":185}," -",[168,5988,952],{"class":329},[168,5990,5991],{"class":170,"line":237},[168,5992,5993],{"class":174},"#输入密码：666    \n",[168,5995,5996],{"class":170,"line":270},[168,5997,5998],{"class":174},"#退出root：\n",[168,6000,6001,6003],{"class":170,"line":275},[168,6002,5983],{"class":181},[168,6004,6005],{"class":185}," user_name\n",[168,6007,6008],{"class":170,"line":281},[168,6009,6010],{"class":202},"exit\n",[140,6012,6014],{"id":6013},"_4linux安装vmware","4.linux安装VMware",[159,6016,6018],{"className":5947,"code":6017,"language":5949,"meta":164,"style":164},"##安装依赖\nsudo apt update \nsudo apt install build-essential linux-headers-generic\n##从官网下载软件包\n##安装VMware\nchmod +x VMware-Workstation-Full-17.5.1-23298084.x86_64.bundle \nsudo .\u002FVMware-Workstation-Full-17.5.1-23298084.x86_64.bundle\n",[83,6019,6020,6025,6037,6050,6055,6060,6073],{"__ignoreMap":164},[168,6021,6022],{"class":170,"line":171},[168,6023,6024],{"class":174},"##安装依赖\n",[168,6026,6027,6029,6031,6034],{"class":170,"line":178},[168,6028,182],{"class":181},[168,6030,186],{"class":185},[168,6032,6033],{"class":185}," update",[168,6035,6036],{"class":329}," \n",[168,6038,6039,6041,6043,6045,6047],{"class":170,"line":192},[168,6040,182],{"class":181},[168,6042,186],{"class":185},[168,6044,199],{"class":185},[168,6046,635],{"class":185},[168,6048,6049],{"class":185}," linux-headers-generic\n",[168,6051,6052],{"class":170,"line":224},[168,6053,6054],{"class":174},"##从官网下载软件包\n",[168,6056,6057],{"class":170,"line":231},[168,6058,6059],{"class":174},"##安装VMware\n",[168,6061,6062,6065,6068,6071],{"class":170,"line":237},[168,6063,6064],{"class":181},"chmod",[168,6066,6067],{"class":185}," +x",[168,6069,6070],{"class":185}," VMware-Workstation-Full-17.5.1-23298084.x86_64.bundle",[168,6072,6036],{"class":329},[168,6074,6075,6077],{"class":170,"line":270},[168,6076,182],{"class":181},[168,6078,6079],{"class":185}," .\u002FVMware-Workstation-Full-17.5.1-23298084.x86_64.bundle\n",[10,6081,6082],{},[154,6083],{"alt":6084,"src":6085},"597","https:\u002F\u002Fsdutvincirobot.feishu.cn\u002Fspace\u002Fapi\u002Fbox\u002Fstream\u002Fdownload\u002Fasynccode\u002F?code=NGRhMTA3NDEyYmU4YzgwNmIwYTQ0N2U2OWMyOGMwZTVfVWw4dDlscXUybzIyampNWHdGZzJWbFBzT3lXR1BlUWNfVG9rZW46WWc1NWI5YmZRb202UWp4ejJpTWN3QXpSbklkXzE3ODQ2NDc0NDU6MTc4NDY1MTA0NV9WNA&add_watermark=true&scene_type=CCM",[140,6087,6089],{"id":6088},"_5串口助手","5.串口助手",[10,6091,6092],{},[154,6093],{"alt":6094,"src":6095},"601","https:\u002F\u002Fsdutvincirobot.feishu.cn\u002Fspace\u002Fapi\u002Fbox\u002Fstream\u002Fdownload\u002Fasynccode\u002F?code=YjJmODg0NTFiMzE5MWNhNjEzM2UwMDhhZTU1NDUwNDJfeWlWR2RGeDRPelk4RmJtRnA0SmdCS2llazRNNms1cXFfVG9rZW46VmNGNWI2Z2Jmb3VlS3N4UnZHWmNMZ3AwbjVnXzE3ODQ2NDc0NDU6MTc4NDY1MTA0NV9WNA&add_watermark=true&scene_type=CCM",[140,6097,6099],{"id":6098},"_6kubuntu2404-lts无法安装clash缺少依赖的问题","6.kubuntu24.04 LTS无法安装clash，缺少依赖的问题",[10,6101,6102,6103],{},"使用以下网站解决问题：",[14,6104,6105],{"href":6105,"rel":6106},"https:\u002F\u002Fwww.clashverge.dev\u002Ffaq\u002Flinux.html",[18],[140,6108,6110],{"id":6109},"_7安装显卡驱动之后亮度调节问题","7.安装显卡驱动之后亮度调节问题",[10,6112,6113],{},"1.按照学长的方法更改xorg无效",[10,6115,6116,6117,6120],{},"2.安装 ",[83,6118,6119],{},"xbacklight","：（有效）",[159,6122,6124],{"className":5947,"code":6123,"language":5949,"meta":164,"style":164},"#安装\nsudo apt install xbacklight\n#设置调节亮度\nxbacklight -set 50\n",[83,6125,6126,6131,6142,6147],{"__ignoreMap":164},[168,6127,6128],{"class":170,"line":171},[168,6129,6130],{"class":174},"#安装\n",[168,6132,6133,6135,6137,6139],{"class":170,"line":178},[168,6134,182],{"class":181},[168,6136,186],{"class":185},[168,6138,199],{"class":185},[168,6140,6141],{"class":185}," xbacklight\n",[168,6143,6144],{"class":170,"line":192},[168,6145,6146],{"class":174},"#设置调节亮度\n",[168,6148,6149,6151,6154],{"class":170,"line":224},[168,6150,6119],{"class":181},[168,6152,6153],{"class":202}," -set",[168,6155,6156],{"class":202}," 50\n",[140,6158,6160],{"id":6159},"_8kubuntu2404-windows硬盘分区挂载失败问题","8.kubuntu24.04 windows硬盘分区挂载失败问题：",[159,6162,6164],{"className":5947,"code":6163,"language":5949,"meta":164,"style":164},"#查找有哪些分区\nsudo fdisk -l\n",[83,6165,6166,6171],{"__ignoreMap":164},[168,6167,6168],{"class":170,"line":171},[168,6169,6170],{"class":174},"#查找有哪些分区\n",[168,6172,6173,6175,6178],{"class":170,"line":178},[168,6174,182],{"class":181},[168,6176,6177],{"class":185}," fdisk",[168,6179,6180],{"class":202}," -l\n",[10,6182,6183],{},[154,6184],{"alt":164,"src":6185},"https:\u002F\u002Fsdutvincirobot.feishu.cn\u002Fspace\u002Fapi\u002Fbox\u002Fstream\u002Fdownload\u002Fasynccode\u002F?code=NTQ1YmI1NjllOGQ0NzAyMDVkYmYwNTJiZDA5YjgyODVfanZFTXc3WldpcEdQNThhOGkwcGdNVGtXbjU0Z1hxQ3BfVG9rZW46THp1M2JtZjE5b3lWTHp4SVdWZGNDbHVWbmlkXzE3ODQ2NDc0NDU6MTc4NDY1MTA0NV9WNA&add_watermark=true&scene_type=CCM",[159,6187,6189],{"className":5947,"code":6188,"language":5949,"meta":164,"style":164},"#使用以下命令来修复文件系统，如果是 ntfs 文件系统，可以使用以下命令\nsudo ntfsfix \u002Fdev\u002Fnvme0n1p4\n#确保你安装了正确的文件系统支持工具。例如，如果文件系统是 ntfs，需要安装 ntfs-3g\nsudo apt install ntfs-3g\n#完成上述步骤后，尝试重新挂载分区\n#分区一般挂载在media\u002Fxiaofangtongxue目录下，先创建挂载文件夹\nsudo mkdir -p \"\u002Fmedia\u002Fxiaofangtongxue\u002FText and Game\"\n#尝试挂载\nsudo mount \u002Fdev\u002Fnvme0n1p4 \"\u002Fmedia\u002Fxiaofangtongxue\u002FText and Game\"\n#检查是否挂载\ndf -h | grep \"\u002Fmedia\u002Fxiaofangtongxue\u002FText and Game\"\n#取消挂载\nsudo umount \u002Fmedia\u002Fxiaofangtongxue\u002FWIN_C\n",[83,6190,6191,6196,6206,6211,6222,6227,6232,6245,6250,6262,6267,6282,6287],{"__ignoreMap":164},[168,6192,6193],{"class":170,"line":171},[168,6194,6195],{"class":174},"#使用以下命令来修复文件系统，如果是 ntfs 文件系统，可以使用以下命令\n",[168,6197,6198,6200,6203],{"class":170,"line":178},[168,6199,182],{"class":181},[168,6201,6202],{"class":185}," ntfsfix",[168,6204,6205],{"class":185}," \u002Fdev\u002Fnvme0n1p4\n",[168,6207,6208],{"class":170,"line":192},[168,6209,6210],{"class":174},"#确保你安装了正确的文件系统支持工具。例如，如果文件系统是 ntfs，需要安装 ntfs-3g\n",[168,6212,6213,6215,6217,6219],{"class":170,"line":224},[168,6214,182],{"class":181},[168,6216,186],{"class":185},[168,6218,199],{"class":185},[168,6220,6221],{"class":185}," ntfs-3g\n",[168,6223,6224],{"class":170,"line":231},[168,6225,6226],{"class":174},"#完成上述步骤后，尝试重新挂载分区\n",[168,6228,6229],{"class":170,"line":237},[168,6230,6231],{"class":174},"#分区一般挂载在media\u002Fxiaofangtongxue目录下，先创建挂载文件夹\n",[168,6233,6234,6236,6239,6242],{"class":170,"line":270},[168,6235,182],{"class":181},[168,6237,6238],{"class":185}," mkdir",[168,6240,6241],{"class":202}," -p",[168,6243,6244],{"class":185}," \"\u002Fmedia\u002Fxiaofangtongxue\u002FText and Game\"\n",[168,6246,6247],{"class":170,"line":275},[168,6248,6249],{"class":174},"#尝试挂载\n",[168,6251,6252,6254,6257,6260],{"class":170,"line":281},[168,6253,182],{"class":181},[168,6255,6256],{"class":185}," mount",[168,6258,6259],{"class":185}," \u002Fdev\u002Fnvme0n1p4",[168,6261,6244],{"class":185},[168,6263,6264],{"class":170,"line":290},[168,6265,6266],{"class":174},"#检查是否挂载\n",[168,6268,6269,6272,6275,6277,6280],{"class":170,"line":299},[168,6270,6271],{"class":181},"df",[168,6273,6274],{"class":202}," -h",[168,6276,4132],{"class":325},[168,6278,6279],{"class":181}," grep",[168,6281,6244],{"class":185},[168,6283,6284],{"class":170,"line":311},[168,6285,6286],{"class":174},"#取消挂载\n",[168,6288,6289,6291,6294],{"class":170,"line":316},[168,6290,182],{"class":181},[168,6292,6293],{"class":185}," umount",[168,6295,6296],{"class":185}," \u002Fmedia\u002Fxiaofangtongxue\u002FWIN_C\n",[10,6298,6299],{},[154,6300],{"alt":164,"src":6301},"https:\u002F\u002Fsdutvincirobot.feishu.cn\u002Fspace\u002Fapi\u002Fbox\u002Fstream\u002Fdownload\u002Fasynccode\u002F?code=MGYxYmQ4M2ZkNmY2NDVkNzQ2ZDk3MzZmMzhkMmU3MTVfR1N6eTYybUtxTkxSdDBibmlsb1o5Y01uSHhpWXRwbHBfVG9rZW46SzBoRmJOcWx1b0dUaER4bUVWQWNSYnVobk9QXzE3ODQ2NDc0NDU6MTc4NDY1MTA0NV9WNA&add_watermark=true&scene_type=CCM",[10,6303,6304],{},"挂载成功！！！",[10,6306,6307],{},"但是此时每次开机时磁盘需要重新挂载，解决方法如下：",[10,6309,6310,6311,6314],{},"要使分区在每次启动时自动挂载，可以通过编辑 ",[83,6312,6313],{},"\u002Fetc\u002Ffstab"," 文件来实现。请按以下步骤操作：",[159,6316,6318],{"className":5947,"code":6317,"language":5949,"meta":164,"style":164},"#使用以下命令获取分区的 UUID：\nsudo blkid \u002Fdev\u002Fnvme1n1p4\nsudo vim \u002Fetc\u002Ffstab\n#更改   UUID=xxxx-xxxx  \u002Fmedia\u002Fxiaofangtongxue\u002FText\\040and\\040Game  ntfs  defaults,rw  0  0\n",[83,6319,6320,6325,6335,6345],{"__ignoreMap":164},[168,6321,6322],{"class":170,"line":171},[168,6323,6324],{"class":174},"#使用以下命令获取分区的 UUID：\n",[168,6326,6327,6329,6332],{"class":170,"line":178},[168,6328,182],{"class":181},[168,6330,6331],{"class":185}," blkid",[168,6333,6334],{"class":185}," \u002Fdev\u002Fnvme1n1p4\n",[168,6336,6337,6339,6342],{"class":170,"line":192},[168,6338,182],{"class":181},[168,6340,6341],{"class":185}," vim",[168,6343,6344],{"class":185}," \u002Fetc\u002Ffstab\n",[168,6346,6347],{"class":170,"line":224},[168,6348,6349],{"class":174},"#更改   UUID=xxxx-xxxx  \u002Fmedia\u002Fxiaofangtongxue\u002FText\\040and\\040Game  ntfs  defaults,rw  0  0\n",[10,6351,6352],{},"挂载成功后但是无法写入文件只可以读取，解决方法如下：",[159,6354,6356],{"className":5947,"code":6355,"language":5949,"meta":164,"style":164},"#取消分区挂载\nsudo umount \u002Fmedia\u002Fxiaofangtongxue\u002FText_and_Game\n#出现错误，发现被占用\numount: \u002Fmedia\u002Fxiaofangtongxue\u002FText_and_Game: target is busy.\nlsof +D \u002Fmedia\u002Fxiaofangtongxue\u002FText_and_Game    #列出正在运行的文件\n\nCOMMAND    PID            USER   FD   TYPE DEVICE SIZE\u002FOFF  NODE NAME \nwpsclouds 3437 xiaofangtongxue  cwd    DIR  259,7     4096 90582 \u002Fmedia\u002Fxiaofangtongxue\u002FText_and_Game\u002FAA_study\n_resource\u002FC++\u002F24二纳作业\u002F第一次考核\n\n#使用keil杀死\nkill -9 3437\nlsof +D \u002Fmedia\u002Fxiaofangtongxue\u002FText_and_Game    #什么都不出现极为正确\n#继续挂载\nsudo mount -t ntfs-3g -o rw \u002Fdev\u002Fnvme0n1p4 \u002Fmedia\u002Fxiaofangtongxue\u002FText_and_Ga\nme\n\n#出现问题\nThe disk contains an unclean file system (0, 0). \nMetadata kept in Windows cache, refused to mount. \nFalling back to read-only mount because the NTFS partition is in an \nunsafe state. Please resume and shutdown Windows fully (no hibernation \nor fast restarting.) \nCould not mount read-write, trying read-only\n\nsudo ntfsfix \u002Fdev\u002Fnvme0n1p4    #进行修复\nNTFS partition \u002Fdev\u002Fnvme0n1p4 was processed successfully.     #完成\n\nsudo mount -t ntfs-3g -o rw \u002Fdev\u002Fnvme0n1p4 \u002Fmedia\u002Fxiaofangtongxue\u002FText_and_Ga\nme                                  #重新挂载，实现读写功能\nmount | grep nvme0n1p4              #检查挂载\n\u002Fdev\u002Fnvme0n1p4 on \u002Fmedia\u002Fxiaofangtongxue\u002FText_and_Game type fuseblk (rw,relatime,user_id=0,group_id=0,allow_ot\nher,blksize=4096)                   #正确使用\n",[83,6357,6358,6363,6372,6377,6394,6408,6412,6443,6472,6477,6481,6486,6497,6508,6513,6536,6541,6545,6550,6582,6610,6645,6678,6691,6710,6714,6725,6746,6750,6768,6776,6791,6810],{"__ignoreMap":164},[168,6359,6360],{"class":170,"line":171},[168,6361,6362],{"class":174},"#取消分区挂载\n",[168,6364,6365,6367,6369],{"class":170,"line":178},[168,6366,182],{"class":181},[168,6368,6293],{"class":185},[168,6370,6371],{"class":185}," \u002Fmedia\u002Fxiaofangtongxue\u002FText_and_Game\n",[168,6373,6374],{"class":170,"line":192},[168,6375,6376],{"class":174},"#出现错误，发现被占用\n",[168,6378,6379,6382,6385,6388,6391],{"class":170,"line":224},[168,6380,6381],{"class":181},"umount:",[168,6383,6384],{"class":185}," \u002Fmedia\u002Fxiaofangtongxue\u002FText_and_Game:",[168,6386,6387],{"class":185}," target",[168,6389,6390],{"class":185}," is",[168,6392,6393],{"class":185}," busy.\n",[168,6395,6396,6399,6402,6405],{"class":170,"line":231},[168,6397,6398],{"class":181},"lsof",[168,6400,6401],{"class":185}," +D",[168,6403,6404],{"class":185}," \u002Fmedia\u002Fxiaofangtongxue\u002FText_and_Game",[168,6406,6407],{"class":174},"    #列出正在运行的文件\n",[168,6409,6410],{"class":170,"line":237},[168,6411,228],{"emptyLinePlaceholder":227},[168,6413,6414,6417,6420,6423,6426,6429,6432,6435,6438,6441],{"class":170,"line":270},[168,6415,6416],{"class":181},"COMMAND",[168,6418,6419],{"class":185},"    PID",[168,6421,6422],{"class":185},"            USER",[168,6424,6425],{"class":185},"   FD",[168,6427,6428],{"class":185},"   TYPE",[168,6430,6431],{"class":185}," DEVICE",[168,6433,6434],{"class":185}," SIZE\u002FOFF",[168,6436,6437],{"class":185},"  NODE",[168,6439,6440],{"class":185}," NAME",[168,6442,6036],{"class":329},[168,6444,6445,6448,6451,6454,6457,6460,6463,6466,6469],{"class":170,"line":275},[168,6446,6447],{"class":181},"wpsclouds",[168,6449,6450],{"class":202}," 3437",[168,6452,6453],{"class":185}," xiaofangtongxue",[168,6455,6456],{"class":185},"  cwd",[168,6458,6459],{"class":185},"    DIR",[168,6461,6462],{"class":185},"  259,7",[168,6464,6465],{"class":202},"     4096",[168,6467,6468],{"class":202}," 90582",[168,6470,6471],{"class":185}," \u002Fmedia\u002Fxiaofangtongxue\u002FText_and_Game\u002FAA_study\n",[168,6473,6474],{"class":170,"line":281},[168,6475,6476],{"class":181},"_resource\u002FC++\u002F24二纳作业\u002F第一次考核\n",[168,6478,6479],{"class":170,"line":290},[168,6480,228],{"emptyLinePlaceholder":227},[168,6482,6483],{"class":170,"line":299},[168,6484,6485],{"class":174},"#使用keil杀死\n",[168,6487,6488,6491,6494],{"class":170,"line":311},[168,6489,6490],{"class":202},"kill",[168,6492,6493],{"class":202}," -9",[168,6495,6496],{"class":202}," 3437\n",[168,6498,6499,6501,6503,6505],{"class":170,"line":316},[168,6500,6398],{"class":181},[168,6502,6401],{"class":185},[168,6504,6404],{"class":185},[168,6506,6507],{"class":174},"    #什么都不出现极为正确\n",[168,6509,6510],{"class":170,"line":322},[168,6511,6512],{"class":174},"#继续挂载\n",[168,6514,6515,6517,6519,6522,6525,6528,6531,6533],{"class":170,"line":345},[168,6516,182],{"class":181},[168,6518,6256],{"class":185},[168,6520,6521],{"class":202}," -t",[168,6523,6524],{"class":185}," ntfs-3g",[168,6526,6527],{"class":202}," -o",[168,6529,6530],{"class":185}," rw",[168,6532,6259],{"class":185},[168,6534,6535],{"class":185}," \u002Fmedia\u002Fxiaofangtongxue\u002FText_and_Ga\n",[168,6537,6538],{"class":170,"line":369},[168,6539,6540],{"class":181},"me\n",[168,6542,6543],{"class":170,"line":395},[168,6544,228],{"emptyLinePlaceholder":227},[168,6546,6547],{"class":170,"line":400},[168,6548,6549],{"class":174},"#出现问题\n",[168,6551,6552,6555,6558,6561,6564,6567,6570,6573,6576,6579],{"class":170,"line":406},[168,6553,6554],{"class":181},"The",[168,6556,6557],{"class":185}," disk",[168,6559,6560],{"class":185}," contains",[168,6562,6563],{"class":185}," an",[168,6565,6566],{"class":185}," unclean",[168,6568,6569],{"class":185}," file",[168,6571,6572],{"class":185}," system",[168,6574,6575],{"class":329}," (0, ",[168,6577,6578],{"class":202},"0",[168,6580,6581],{"class":329},"). \n",[168,6583,6584,6587,6590,6593,6596,6599,6602,6605,6608],{"class":170,"line":414},[168,6585,6586],{"class":181},"Metadata",[168,6588,6589],{"class":185}," kept",[168,6591,6592],{"class":185}," in",[168,6594,6595],{"class":185}," Windows",[168,6597,6598],{"class":185}," cache,",[168,6600,6601],{"class":185}," refused",[168,6603,6604],{"class":185}," to",[168,6606,6607],{"class":185}," mount.",[168,6609,6036],{"class":329},[168,6611,6612,6615,6618,6620,6623,6625,6628,6631,6634,6637,6639,6641,6643],{"class":170,"line":996},[168,6613,6614],{"class":181},"Falling",[168,6616,6617],{"class":185}," back",[168,6619,6604],{"class":185},[168,6621,6622],{"class":185}," read-only",[168,6624,6256],{"class":185},[168,6626,6627],{"class":185}," because",[168,6629,6630],{"class":185}," the",[168,6632,6633],{"class":185}," NTFS",[168,6635,6636],{"class":185}," partition",[168,6638,6390],{"class":185},[168,6640,6592],{"class":185},[168,6642,6563],{"class":185},[168,6644,6036],{"class":329},[168,6646,6647,6650,6653,6656,6659,6662,6665,6667,6670,6673,6676],{"class":170,"line":1001},[168,6648,6649],{"class":181},"unsafe",[168,6651,6652],{"class":185}," state.",[168,6654,6655],{"class":185}," Please",[168,6657,6658],{"class":185}," resume",[168,6660,6661],{"class":185}," and",[168,6663,6664],{"class":185}," shutdown",[168,6666,6595],{"class":185},[168,6668,6669],{"class":185}," fully",[168,6671,6672],{"class":329}," (no ",[168,6674,6675],{"class":185},"hibernation",[168,6677,6036],{"class":329},[168,6679,6680,6682,6685,6688],{"class":170,"line":1007},[168,6681,3863],{"class":181},[168,6683,6684],{"class":185}," fast",[168,6686,6687],{"class":185}," restarting.",[168,6689,6690],{"class":329},") \n",[168,6692,6693,6696,6699,6701,6704,6707],{"class":170,"line":1013},[168,6694,6695],{"class":181},"Could",[168,6697,6698],{"class":185}," not",[168,6700,6256],{"class":185},[168,6702,6703],{"class":185}," read-write,",[168,6705,6706],{"class":185}," trying",[168,6708,6709],{"class":185}," read-only\n",[168,6711,6712],{"class":170,"line":1018},[168,6713,228],{"emptyLinePlaceholder":227},[168,6715,6716,6718,6720,6722],{"class":170,"line":1024},[168,6717,182],{"class":181},[168,6719,6202],{"class":185},[168,6721,6259],{"class":185},[168,6723,6724],{"class":174},"    #进行修复\n",[168,6726,6727,6730,6732,6734,6737,6740,6743],{"class":170,"line":1030},[168,6728,6729],{"class":181},"NTFS",[168,6731,6636],{"class":185},[168,6733,6259],{"class":185},[168,6735,6736],{"class":185}," was",[168,6738,6739],{"class":185}," processed",[168,6741,6742],{"class":185}," successfully.",[168,6744,6745],{"class":174},"     #完成\n",[168,6747,6748],{"class":170,"line":1035},[168,6749,228],{"emptyLinePlaceholder":227},[168,6751,6752,6754,6756,6758,6760,6762,6764,6766],{"class":170,"line":1041},[168,6753,182],{"class":181},[168,6755,6256],{"class":185},[168,6757,6521],{"class":202},[168,6759,6524],{"class":185},[168,6761,6527],{"class":202},[168,6763,6530],{"class":185},[168,6765,6259],{"class":185},[168,6767,6535],{"class":185},[168,6769,6770,6773],{"class":170,"line":1046},[168,6771,6772],{"class":181},"me",[168,6774,6775],{"class":174},"                                  #重新挂载，实现读写功能\n",[168,6777,6778,6781,6783,6785,6788],{"class":170,"line":1052},[168,6779,6780],{"class":181},"mount",[168,6782,4132],{"class":325},[168,6784,6279],{"class":181},[168,6786,6787],{"class":185}," nvme0n1p4",[168,6789,6790],{"class":174},"              #检查挂载\n",[168,6792,6793,6796,6799,6801,6804,6807],{"class":170,"line":1058},[168,6794,6795],{"class":181},"\u002Fdev\u002Fnvme0n1p4",[168,6797,6798],{"class":185}," on",[168,6800,6404],{"class":185},[168,6802,6803],{"class":185}," type",[168,6805,6806],{"class":185}," fuseblk",[168,6808,6809],{"class":329}," (rw,relatime,user_id=0,group_id=0,allow_ot\n",[168,6811,6812,6815,6818,6821],{"class":170,"line":1063},[168,6813,6814],{"class":181},"her,blksize",[168,6816,6817],{"class":185},"=4096",[168,6819,6820],{"class":329},")                   ",[168,6822,6823],{"class":174},"#正确使用\n",[140,6825,6827],{"id":6826},"_9qq音乐在kubuntu2404闪退问题","9.QQ音乐在kubuntu24.04闪退问题",[159,6829,6831],{"className":5947,"code":6830,"language":5949,"meta":164,"style":164},"sudo vi \u002Fusr\u002Fshare\u002Fapplications\u002Fqqmusic.desktop\n#找到Exec=\u002Fopt\u002Fqqmusic\u002Fqqmusic %U\n#在后面加上--no-sandbox\n",[83,6832,6833,6843,6848],{"__ignoreMap":164},[168,6834,6835,6837,6840],{"class":170,"line":171},[168,6836,182],{"class":181},[168,6838,6839],{"class":185}," vi",[168,6841,6842],{"class":185}," \u002Fusr\u002Fshare\u002Fapplications\u002Fqqmusic.desktop\n",[168,6844,6845],{"class":170,"line":178},[168,6846,6847],{"class":174},"#找到Exec=\u002Fopt\u002Fqqmusic\u002Fqqmusic %U\n",[168,6849,6850],{"class":170,"line":192},[168,6851,6852],{"class":174},"#在后面加上--no-sandbox\n",[10,6854,6855],{},[154,6856],{"alt":164,"src":6857},"https:\u002F\u002Fsdutvincirobot.feishu.cn\u002Fspace\u002Fapi\u002Fbox\u002Fstream\u002Fdownload\u002Fasynccode\u002F?code=NmI4OTVmZDIyMjJjOTE4NTE1OGE3ZDViNjc1MDRkNGVfb3JWM01wRkRKVm1rZTFZT3dKRmhuRmZmbHRoTDBiUjlfVG9rZW46Q0xZUmJxQlpXb0tvNW94bXJRSWNRcFkybmNnXzE3ODQ2NDc0NDU6MTc4NDY1MTA0NV9WNA&add_watermark=true&scene_type=CCM",[10,6859,6860],{},[154,6861],{"alt":164,"src":6862},"https:\u002F\u002Fsdutvincirobot.feishu.cn\u002Fspace\u002Fapi\u002Fbox\u002Fstream\u002Fdownload\u002Fasynccode\u002F?code=NGI4NjVjZTZhN2I4NGIzY2RlMjFiYTQ2NTM1ZGFlYTJfTEl6UllIb3VJYkhJZ1JzcmUyQlVNZ3drQ3lzMjNQNHBfVG9rZW46R29WbmJwc1Nib0ZTQXV4c0xsQmNKRGp3bjZmXzE3ODQ2NDc0NDU6MTc4NDY1MTA0NV9WNA&add_watermark=true&scene_type=CCM",[10,6864,6865],{},"成功解决！",[140,6867,6869],{"id":6868},"_10-权限不足导致无法访问",[44,6870,6871],{},"10. 权限不足导致无法访问",[860,6873,6875],{"id":6874},"原因",[44,6876,6877],{},"原因：",[10,6879,6880],{},"挂载点或磁盘上的文件权限不足，导致普通用户无法进入。",[860,6882,6884],{"id":6883},"解决方法修改挂载点权限",[44,6885,6886],{},"解决方法：修改挂载点权限",[10,6888,6889],{},[44,6890,6891],{},"方法一：将挂载点所有权改为当前用户",[10,6893,163],{},[10,6895,6896],{},"复制代码",[10,6898,6899],{},[83,6900,6901],{},"sudo chown -R $USER:$USER \u002Fmnt\u002Fyour_mount_point",[37,6903,6905],{"id":6904},"fedora-系列","Fedora 系列",[140,6907,6909],{"id":6908},"_1fedora-update","1.Fedora Update",[10,6911,6912],{},[14,6913,6916],{"href":6914,"rel":6915},"https:\u002F\u002Fwww.sysgeek.cn\u002Fupgrade-fedora-to-latest-release\u002F",[18],"Fedora 升级系统版本",[140,6918,6920],{"id":6919},"_2-linux-下的bilibili客户端","2. linux 下的bilibili客户端",[10,6922,6923],{},[14,6924,6927],{"href":6925,"rel":6926},"https:\u002F\u002Fgithub.com\u002Fmsojocs\u002Fbilibili-linux",[18],"bilibili",[140,6929,6931],{"id":6930},"_3-很多软件安装之后不显示中文字体多半是没有安装","3. 很多软件安装之后不显示中文字体,多半是没有安装",[10,6933,6934],{},[154,6935],{"alt":6936,"src":6937},"378","https:\u002F\u002Fsdutvincirobot.feishu.cn\u002Fspace\u002Fapi\u002Fbox\u002Fstream\u002Fdownload\u002Fasynccode\u002F?code=OWE4NDUyNjVlZmRkOGZlNTlmNTE5MDk3NmMyOGQ4ZGVfMWRwUmI2dFM2SXRoM2IzWmFNZVRSN1Y3bDhtYUxUQzFfVG9rZW46V2MyRmI1N0Vwb2FIZm94akNxRGNJQVczbmxyXzE3ODQ2NDc0NDU6MTc4NDY1MTA0NV9WNA&add_watermark=true&scene_type=CCM",[159,6939,6941],{"className":5947,"code":6940,"language":5949,"meta":164,"style":164},"#安装中文字体\nsudo dnf install google-noto-sans-cjk-ttc-fonts google-noto-serif-cjk-ttc-fonts \\\nadobe-source-han-sans-cn-fonts adobe-source-han-serif-cn-fonts \\\nwqy-zenhei-fonts wqy-microhei-fonts\n#刷新字体\nfc-cache -fv\n#确认系统字体能找到中文覆盖\nfc-list :lang=zh | wc -l\n#返回的数字大于0说明成功\n",[83,6942,6943,6948,6964,6974,6982,6987,6995,7000,7015],{"__ignoreMap":164},[168,6944,6945],{"class":170,"line":171},[168,6946,6947],{"class":174},"#安装中文字体\n",[168,6949,6950,6952,6954,6956,6959,6962],{"class":170,"line":178},[168,6951,182],{"class":181},[168,6953,242],{"class":185},[168,6955,199],{"class":185},[168,6957,6958],{"class":185}," google-noto-sans-cjk-ttc-fonts",[168,6960,6961],{"class":185}," google-noto-serif-cjk-ttc-fonts",[168,6963,3926],{"class":202},[168,6965,6966,6969,6972],{"class":170,"line":192},[168,6967,6968],{"class":329},"adobe-source-han-sans-cn-fonts ",[168,6970,6971],{"class":185},"adobe-source-han-serif-cn-fonts",[168,6973,3926],{"class":202},[168,6975,6976,6979],{"class":170,"line":224},[168,6977,6978],{"class":329},"wqy-zenhei-fonts ",[168,6980,6981],{"class":185},"wqy-microhei-fonts\n",[168,6983,6984],{"class":170,"line":231},[168,6985,6986],{"class":174},"#刷新字体\n",[168,6988,6989,6992],{"class":170,"line":237},[168,6990,6991],{"class":181},"fc-cache",[168,6993,6994],{"class":202}," -fv\n",[168,6996,6997],{"class":170,"line":270},[168,6998,6999],{"class":174},"#确认系统字体能找到中文覆盖\n",[168,7001,7002,7005,7008,7010,7013],{"class":170,"line":275},[168,7003,7004],{"class":181},"fc-list",[168,7006,7007],{"class":185}," :lang=zh",[168,7009,4132],{"class":325},[168,7011,7012],{"class":181}," wc",[168,7014,6180],{"class":202},[168,7016,7017],{"class":170,"line":281},[168,7018,7019],{"class":174},"#返回的数字大于0说明成功\n",[10,7021,7022],{},[154,7023],{"alt":7024,"src":7025},"422","https:\u002F\u002Fsdutvincirobot.feishu.cn\u002Fspace\u002Fapi\u002Fbox\u002Fstream\u002Fdownload\u002Fasynccode\u002F?code=YTk4ZmNmOTdiOWQ3NWJlYmI1NGNlMmUxMTYyMmEyODlfT0lFdVZsbTk2Q2owT01STnVUY0xTTXhVSDc5eWtTeHhfVG9rZW46R1kxNmJnYnp1b2V1T0R4ZkFxTmNzYUhBbmpkXzE3ODQ2NDc0NDU6MTc4NDY1MTA0NV9WNA&add_watermark=true&scene_type=CCM",[10,7027,7028],{},"成功解决!",[140,7030,7032],{"id":7031},"_4-vscode配置-symbols-nerd-font-mono字体","4.  vscode配置 Symbols Nerd Font Mono字体",[10,7034,7035],{},[154,7036],{"alt":7037,"src":7038},"769","https:\u002F\u002Fsdutvincirobot.feishu.cn\u002Fspace\u002Fapi\u002Fbox\u002Fstream\u002Fdownload\u002Fasynccode\u002F?code=MDEzMDkzNDk0N2RlYzIwMmIwYTM2MDFiNzk2MmM3MzNfajNxU3dFSkZkZnhkZm8wTjNVdkRiN3p6VFo5U0Y1bE1fVG9rZW46T3lHNWJVVDk5bzg2T1J4RWxzYmNONXR2bjBmXzE3ODQ2NDc0NDU6MTc4NDY1MTA0NV9WNA&add_watermark=true&scene_type=CCM",[37,7040,7041],{"id":7041},"适用于所有linux系列",[140,7043,7045],{"id":7044},"_1-更改文件所有者","1. 更改文件所有者",[159,7047,7049],{"className":5947,"code":7048,"language":5949,"meta":164,"style":164},"ls -l  #查看文件所有者\ntotal 36 \ndrwxr-xr-x. 4 xiaofang xiaofang 4096 Oct 24 16:26 base_driver_pkg \ndrwxr-xr-x. 3 xiaofang xiaofang 4096 Oct 24 16:26 base_interfaces \ndrwxr-xr-x. 4 xiaofang xiaofang 4096 Oct 24 16:26 localization_pkg \ndrwxr-xr-x. 3 xiaofang xiaofang 4096 Oct 24 16:26 my_map_server \ndrwxr-xr-x. 4 xiaofang xiaofang 4096 Oct 24 16:26 my_slam_toolbox \ndrwxrwxrwx. 4 root     root     4096 Oct 25 19:26 navigation2_config \n\nsudo chown $USER:$USER navigation2_config\u002F  #更改为当前用户所有\nsudo chown -R $USER:$USER folder_name #递归修改\nls -l \ntotal 36 \ndrwxr-xr-x. 4 xiaofang xiaofang 4096 Oct 24 16:26 base_driver_pkg \ndrwxr-xr-x. 3 xiaofang xiaofang 4096 Oct 24 16:26 base_interfaces \ndrwxr-xr-x. 4 xiaofang xiaofang 4096 Oct 24 16:26 localization_pkg \ndrwxr-xr-x. 3 xiaofang xiaofang 4096 Oct 24 16:26 my_map_server \ndrwxr-xr-x. 4 xiaofang xiaofang 4096 Oct 24 16:26 my_slam_toolbox \ndrwxrwxrwx. 4 xiaofang xiaofang 4096 Oct 25 19:26 navigation2_config\n \n",[83,7050,7051,7061,7071,7101,7125,7148,7171,7194,7222,7226,7248,7269,7277,7285,7307,7329,7351,7373,7395],{"__ignoreMap":164},[168,7052,7053,7055,7058],{"class":170,"line":171},[168,7054,4153],{"class":181},[168,7056,7057],{"class":202}," -l",[168,7059,7060],{"class":174},"  #查看文件所有者\n",[168,7062,7063,7066,7069],{"class":170,"line":178},[168,7064,7065],{"class":181},"total",[168,7067,7068],{"class":202}," 36",[168,7070,6036],{"class":329},[168,7072,7073,7076,7079,7082,7084,7087,7090,7093,7096,7099],{"class":170,"line":192},[168,7074,7075],{"class":181},"drwxr-xr-x.",[168,7077,7078],{"class":202}," 4",[168,7080,7081],{"class":185}," xiaofang",[168,7083,7081],{"class":185},[168,7085,7086],{"class":202}," 4096",[168,7088,7089],{"class":185}," Oct",[168,7091,7092],{"class":202}," 24",[168,7094,7095],{"class":185}," 16:26",[168,7097,7098],{"class":185}," base_driver_pkg",[168,7100,6036],{"class":329},[168,7102,7103,7105,7108,7110,7112,7114,7116,7118,7120,7123],{"class":170,"line":224},[168,7104,7075],{"class":181},[168,7106,7107],{"class":202}," 3",[168,7109,7081],{"class":185},[168,7111,7081],{"class":185},[168,7113,7086],{"class":202},[168,7115,7089],{"class":185},[168,7117,7092],{"class":202},[168,7119,7095],{"class":185},[168,7121,7122],{"class":185}," base_interfaces",[168,7124,6036],{"class":329},[168,7126,7127,7129,7131,7133,7135,7137,7139,7141,7143,7146],{"class":170,"line":231},[168,7128,7075],{"class":181},[168,7130,7078],{"class":202},[168,7132,7081],{"class":185},[168,7134,7081],{"class":185},[168,7136,7086],{"class":202},[168,7138,7089],{"class":185},[168,7140,7092],{"class":202},[168,7142,7095],{"class":185},[168,7144,7145],{"class":185}," localization_pkg",[168,7147,6036],{"class":329},[168,7149,7150,7152,7154,7156,7158,7160,7162,7164,7166,7169],{"class":170,"line":237},[168,7151,7075],{"class":181},[168,7153,7107],{"class":202},[168,7155,7081],{"class":185},[168,7157,7081],{"class":185},[168,7159,7086],{"class":202},[168,7161,7089],{"class":185},[168,7163,7092],{"class":202},[168,7165,7095],{"class":185},[168,7167,7168],{"class":185}," my_map_server",[168,7170,6036],{"class":329},[168,7172,7173,7175,7177,7179,7181,7183,7185,7187,7189,7192],{"class":170,"line":270},[168,7174,7075],{"class":181},[168,7176,7078],{"class":202},[168,7178,7081],{"class":185},[168,7180,7081],{"class":185},[168,7182,7086],{"class":202},[168,7184,7089],{"class":185},[168,7186,7092],{"class":202},[168,7188,7095],{"class":185},[168,7190,7191],{"class":185}," my_slam_toolbox",[168,7193,6036],{"class":329},[168,7195,7196,7199,7201,7204,7207,7209,7211,7214,7217,7220],{"class":170,"line":275},[168,7197,7198],{"class":181},"drwxrwxrwx.",[168,7200,7078],{"class":202},[168,7202,7203],{"class":185}," root",[168,7205,7206],{"class":185},"     root",[168,7208,6465],{"class":202},[168,7210,7089],{"class":185},[168,7212,7213],{"class":202}," 25",[168,7215,7216],{"class":185}," 19:26",[168,7218,7219],{"class":185}," navigation2_config",[168,7221,6036],{"class":329},[168,7223,7224],{"class":170,"line":281},[168,7225,228],{"emptyLinePlaceholder":227},[168,7227,7228,7230,7233,7236,7239,7242,7245],{"class":170,"line":290},[168,7229,182],{"class":181},[168,7231,7232],{"class":185}," chown",[168,7234,7235],{"class":329}," $USER",[168,7237,7238],{"class":185},":",[168,7240,7241],{"class":329},"$USER ",[168,7243,7244],{"class":185},"navigation2_config\u002F",[168,7246,7247],{"class":174},"  #更改为当前用户所有\n",[168,7249,7250,7252,7254,7257,7259,7261,7263,7266],{"class":170,"line":299},[168,7251,182],{"class":181},[168,7253,7232],{"class":185},[168,7255,7256],{"class":202}," -R",[168,7258,7235],{"class":329},[168,7260,7238],{"class":185},[168,7262,7241],{"class":329},[168,7264,7265],{"class":185},"folder_name",[168,7267,7268],{"class":174}," #递归修改\n",[168,7270,7271,7273,7275],{"class":170,"line":311},[168,7272,4153],{"class":181},[168,7274,7057],{"class":202},[168,7276,6036],{"class":329},[168,7278,7279,7281,7283],{"class":170,"line":316},[168,7280,7065],{"class":181},[168,7282,7068],{"class":202},[168,7284,6036],{"class":329},[168,7286,7287,7289,7291,7293,7295,7297,7299,7301,7303,7305],{"class":170,"line":322},[168,7288,7075],{"class":181},[168,7290,7078],{"class":202},[168,7292,7081],{"class":185},[168,7294,7081],{"class":185},[168,7296,7086],{"class":202},[168,7298,7089],{"class":185},[168,7300,7092],{"class":202},[168,7302,7095],{"class":185},[168,7304,7098],{"class":185},[168,7306,6036],{"class":329},[168,7308,7309,7311,7313,7315,7317,7319,7321,7323,7325,7327],{"class":170,"line":345},[168,7310,7075],{"class":181},[168,7312,7107],{"class":202},[168,7314,7081],{"class":185},[168,7316,7081],{"class":185},[168,7318,7086],{"class":202},[168,7320,7089],{"class":185},[168,7322,7092],{"class":202},[168,7324,7095],{"class":185},[168,7326,7122],{"class":185},[168,7328,6036],{"class":329},[168,7330,7331,7333,7335,7337,7339,7341,7343,7345,7347,7349],{"class":170,"line":369},[168,7332,7075],{"class":181},[168,7334,7078],{"class":202},[168,7336,7081],{"class":185},[168,7338,7081],{"class":185},[168,7340,7086],{"class":202},[168,7342,7089],{"class":185},[168,7344,7092],{"class":202},[168,7346,7095],{"class":185},[168,7348,7145],{"class":185},[168,7350,6036],{"class":329},[168,7352,7353,7355,7357,7359,7361,7363,7365,7367,7369,7371],{"class":170,"line":395},[168,7354,7075],{"class":181},[168,7356,7107],{"class":202},[168,7358,7081],{"class":185},[168,7360,7081],{"class":185},[168,7362,7086],{"class":202},[168,7364,7089],{"class":185},[168,7366,7092],{"class":202},[168,7368,7095],{"class":185},[168,7370,7168],{"class":185},[168,7372,6036],{"class":329},[168,7374,7375,7377,7379,7381,7383,7385,7387,7389,7391,7393],{"class":170,"line":400},[168,7376,7075],{"class":181},[168,7378,7078],{"class":202},[168,7380,7081],{"class":185},[168,7382,7081],{"class":185},[168,7384,7086],{"class":202},[168,7386,7089],{"class":185},[168,7388,7092],{"class":202},[168,7390,7095],{"class":185},[168,7392,7191],{"class":185},[168,7394,6036],{"class":329},[168,7396,7397,7399,7401,7403,7405,7407,7409,7411,7413],{"class":170,"line":406},[168,7398,7198],{"class":181},[168,7400,7078],{"class":202},[168,7402,7081],{"class":185},[168,7404,7081],{"class":185},[168,7406,7086],{"class":202},[168,7408,7089],{"class":185},[168,7410,7213],{"class":202},[168,7412,7216],{"class":185},[168,7414,7415],{"class":185}," navigation2_config\n",[140,7417,7419],{"id":7418},"_2-创建软件图标","2. 创建软件图标",[159,7421,7423],{"className":5947,"code":7422,"language":5949,"meta":164,"style":164},"cd ~\u002F.local\u002Fshare\u002Fapplications\u002F\ntouch .\u002Fqqmusic.desktop\nvim .\u002Fqqmusic.desktop\nsudo chmod +x .\u002Fqqmusic.desktop\n",[83,7424,7425,7432,7440,7447],{"__ignoreMap":164},[168,7426,7427,7429],{"class":170,"line":171},[168,7428,284],{"class":202},[168,7430,7431],{"class":185}," ~\u002F.local\u002Fshare\u002Fapplications\u002F\n",[168,7433,7434,7437],{"class":170,"line":178},[168,7435,7436],{"class":181},"touch",[168,7438,7439],{"class":185}," .\u002Fqqmusic.desktop\n",[168,7441,7442,7445],{"class":170,"line":192},[168,7443,7444],{"class":181},"vim",[168,7446,7439],{"class":185},[168,7448,7449,7451,7454,7456],{"class":170,"line":224},[168,7450,182],{"class":181},[168,7452,7453],{"class":185}," chmod",[168,7455,6067],{"class":185},[168,7457,7439],{"class":185},[159,7459,7461],{"className":5947,"code":7460,"language":5949,"meta":164,"style":164},"[Desktop Entry]\nName=QQ音乐\nExec=\u002Fhome\u002Ftungchiahui\u002FUserFloder\u002FApplications\u002Fqqmusic\u002Fqqmusic-1.1.7.AppImage\nIcon=\u002Fhome\u002Ftungchiahui\u002FUserFloder\u002FApplications\u002Fqqmusic\u002FQQ_Music2023.svg\nType=Application\nCategories=Audio;Music;Player;\nComment=QQ Music Client for Linux\n",[83,7462,7463,7468,7478,7488,7498,7508,7532],{"__ignoreMap":164},[168,7464,7465],{"class":170,"line":171},[168,7466,7467],{"class":329},"[Desktop Entry]\n",[168,7469,7470,7473,7475],{"class":170,"line":178},[168,7471,7472],{"class":329},"Name",[168,7474,333],{"class":325},[168,7476,7477],{"class":185},"QQ音乐\n",[168,7479,7480,7483,7485],{"class":170,"line":192},[168,7481,7482],{"class":329},"Exec",[168,7484,333],{"class":325},[168,7486,7487],{"class":185},"\u002Fhome\u002Ftungchiahui\u002FUserFloder\u002FApplications\u002Fqqmusic\u002Fqqmusic-1.1.7.AppImage\n",[168,7489,7490,7493,7495],{"class":170,"line":224},[168,7491,7492],{"class":329},"Icon",[168,7494,333],{"class":325},[168,7496,7497],{"class":185},"\u002Fhome\u002Ftungchiahui\u002FUserFloder\u002FApplications\u002Fqqmusic\u002FQQ_Music2023.svg\n",[168,7499,7500,7503,7505],{"class":170,"line":231},[168,7501,7502],{"class":329},"Type",[168,7504,333],{"class":325},[168,7506,7507],{"class":185},"Application\n",[168,7509,7510,7513,7515,7518,7521,7524,7526,7529],{"class":170,"line":237},[168,7511,7512],{"class":329},"Categories",[168,7514,333],{"class":325},[168,7516,7517],{"class":185},"Audio",[168,7519,7520],{"class":329},";",[168,7522,7523],{"class":181},"Music",[168,7525,7520],{"class":329},[168,7527,7528],{"class":181},"Player",[168,7530,7531],{"class":329},";\n",[168,7533,7534,7537,7539,7542,7545,7548,7551],{"class":170,"line":270},[168,7535,7536],{"class":329},"Comment",[168,7538,333],{"class":325},[168,7540,7541],{"class":185},"QQ",[168,7543,7544],{"class":181}," Music",[168,7546,7547],{"class":185}," Client",[168,7549,7550],{"class":185}," for",[168,7552,7553],{"class":185}," Linux\n",[159,7555,7557],{"className":5947,"code":7556,"language":5949,"meta":164,"style":164},"Utility（实用工具）\nDevelopment（开发工具）\nGraphics（图形设计）\nAudioVideo（影音）\nEducation（教育）\nNetwork（网络）\nOffice（办公）\n",[83,7558,7559,7564,7569,7574,7579,7584,7589],{"__ignoreMap":164},[168,7560,7561],{"class":170,"line":171},[168,7562,7563],{"class":181},"Utility（实用工具）\n",[168,7565,7566],{"class":170,"line":178},[168,7567,7568],{"class":181},"Development（开发工具）\n",[168,7570,7571],{"class":170,"line":192},[168,7572,7573],{"class":181},"Graphics（图形设计）\n",[168,7575,7576],{"class":170,"line":224},[168,7577,7578],{"class":181},"AudioVideo（影音）\n",[168,7580,7581],{"class":170,"line":231},[168,7582,7583],{"class":181},"Education（教育）\n",[168,7585,7586],{"class":170,"line":237},[168,7587,7588],{"class":181},"Network（网络）\n",[168,7590,7591],{"class":170,"line":270},[168,7592,7593],{"class":181},"Office（办公）\n",[37,7595,7597],{"id":7596},"linux美化与体验优化","Linux美化与体验优化",[140,7599,7601],{"id":7600},"_1-终端美化","1. 终端美化",[860,7603,7605],{"id":7604},"_11美化提示符-使用starship","1.1美化提示符 （使用starship）",[3436,7607,7608],{},[801,7609,7610,7611],{},"下载好字体还有配置文件\n",[14,7612,7615],{"href":7613,"rel":7614},"https:\u002F\u002Fstarship.rs\u002F",[18],"starship",[10,7617,7618],{},"按照官方配置即可",[10,7620,7621],{},[154,7622],{"alt":7623,"src":7624},"569","https:\u002F\u002Fsdutvincirobot.feishu.cn\u002Fspace\u002Fapi\u002Fbox\u002Fstream\u002Fdownload\u002Fasynccode\u002F?code=NmVkMGI5ZGJhNmIzZTc1NjU1OGEzZDQyYWZlNTczOTRfd01rM0tVQWtORUNoSmIydHV1Um5yN1pFeUNNeHVFeWFfVG9rZW46T3plUWIyS3RHb1JFdUV4VWYzb2NwVnJibmpmXzE3ODQ2NDc0NDU6MTc4NDY1MTA0NV9WNA&add_watermark=true&scene_type=CCM",[3436,7626,7627],{"start":178},[801,7628,7629],{},"编辑当前shell的配置文件\n例如:",[10,7631,7632],{},"fish",[159,7634,7638],{"className":7635,"code":7636,"language":7637,"meta":164,"style":164},"language-Shell shiki shiki-themes github-light github-dark","vim ~\u002F.config\u002Ffish\u002Fconfig.fish\n\n#写入\nstarship init fish | source\n","Shell",[83,7639,7640,7646,7650,7655],{"__ignoreMap":164},[168,7641,7642,7644],{"class":170,"line":171},[168,7643,7444],{"class":181},[168,7645,4180],{"class":185},[168,7647,7648],{"class":170,"line":178},[168,7649,228],{"emptyLinePlaceholder":227},[168,7651,7652],{"class":170,"line":192},[168,7653,7654],{"class":174},"#写入\n",[168,7656,7657,7659,7662,7665,7667],{"class":170,"line":224},[168,7658,7615],{"class":181},[168,7660,7661],{"class":185}," init",[168,7663,7664],{"class":185}," fish",[168,7666,4132],{"class":325},[168,7668,7669],{"class":202}," source\n",[10,7671,163],{},[159,7673,7675],{"className":5947,"code":7674,"language":5949,"meta":164,"style":164},"vim ~\u002F.bashrc \n\neval \"$(starship init bash)\"\n",[83,7676,7677,7685,7689],{"__ignoreMap":164},[168,7678,7679,7681,7683],{"class":170,"line":171},[168,7680,7444],{"class":181},[168,7682,436],{"class":185},[168,7684,6036],{"class":329},[168,7686,7687],{"class":170,"line":178},[168,7688,228],{"emptyLinePlaceholder":227},[168,7690,7691,7694,7697,7699],{"class":170,"line":192},[168,7692,7693],{"class":202},"eval",[168,7695,7696],{"class":185}," \"$(",[168,7698,7615],{"class":181},[168,7700,7701],{"class":185}," init bash)\"\n",[140,7703,7705],{"id":7704},"_2终端文件显示","2.终端文件显示",[10,7707,7708],{},[14,7709,7712],{"href":7710,"rel":7711},"https:\u002F\u002Fyazi-rs.github.io\u002Fdocs\u002Fquick-start",[18],"使用yazi",[140,7714,7716],{"id":7715},"_3wayland-窗口管理器美化-niri-dms","3.Wayland 窗口管理器美化 NiRi DMS",[860,7718,7720],{"id":7719},"obs在niri下无法录制屏幕的问题","OBS在niri下无法录制屏幕的问题",[798,7722,7723,7729],{},[801,7724,7725,7726],{},"原因：原来在KDE下面，转到niri之后缺少驱动 ",[83,7727,7728],{},"xdg-desktop-portal-gnome",[801,7730,7731],{},"解决方法:重新安装这个驱动",[159,7733,7735],{"className":161,"code":7734,"language":163,"meta":164,"style":164},"#install service\nsudo dnf install xdg-desktop-portal-gnome\n#reboot service\nsystemctl --user restart xdg-desktop-portal\nsystemctl --user restart xdg-desktop-portal-gnome\n#查看状态  显示active即可\nsystemctl --user status xdg-desktop-portal-gnome\n#彻底关闭OBS\nflatpak kill com.obsproject.Studio\n#重新打开就有啦\n",[83,7736,7737,7742,7753,7758,7772,7782,7787,7798,7803,7814],{"__ignoreMap":164},[168,7738,7739],{"class":170,"line":171},[168,7740,7741],{"class":174},"#install service\n",[168,7743,7744,7746,7748,7750],{"class":170,"line":178},[168,7745,182],{"class":181},[168,7747,242],{"class":185},[168,7749,199],{"class":185},[168,7751,7752],{"class":185}," xdg-desktop-portal-gnome\n",[168,7754,7755],{"class":170,"line":192},[168,7756,7757],{"class":174},"#reboot service\n",[168,7759,7760,7763,7766,7769],{"class":170,"line":224},[168,7761,7762],{"class":181},"systemctl",[168,7764,7765],{"class":202}," --user",[168,7767,7768],{"class":185}," restart",[168,7770,7771],{"class":185}," xdg-desktop-portal\n",[168,7773,7774,7776,7778,7780],{"class":170,"line":231},[168,7775,7762],{"class":181},[168,7777,7765],{"class":202},[168,7779,7768],{"class":185},[168,7781,7752],{"class":185},[168,7783,7784],{"class":170,"line":237},[168,7785,7786],{"class":174},"#查看状态  显示active即可\n",[168,7788,7789,7791,7793,7796],{"class":170,"line":270},[168,7790,7762],{"class":181},[168,7792,7765],{"class":202},[168,7794,7795],{"class":185}," status",[168,7797,7752],{"class":185},[168,7799,7800],{"class":170,"line":275},[168,7801,7802],{"class":174},"#彻底关闭OBS\n",[168,7804,7805,7808,7811],{"class":170,"line":281},[168,7806,7807],{"class":181},"flatpak",[168,7809,7810],{"class":185}," kill",[168,7812,7813],{"class":185}," com.obsproject.Studio\n",[168,7815,7816],{"class":170,"line":290},[168,7817,7818],{"class":174},"#重新打开就有啦\n",[4047,7820,7821],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":164,"searchDepth":224,"depth":224,"links":7823},[7824,7839,7845,7849],{"id":5909,"depth":178,"text":5909,"children":7825},[7826,7827,7828,7829,7830,7831,7832,7833,7834,7835],{"id":5914,"depth":192,"text":5915},{"id":5936,"depth":192,"text":5937},{"id":5943,"depth":192,"text":5944},{"id":6013,"depth":192,"text":6014},{"id":6088,"depth":192,"text":6089},{"id":6098,"depth":192,"text":6099},{"id":6109,"depth":192,"text":6110},{"id":6159,"depth":192,"text":6160},{"id":6826,"depth":192,"text":6827},{"id":6868,"depth":192,"text":6871,"children":7836},[7837,7838],{"id":6874,"depth":224,"text":6877},{"id":6883,"depth":224,"text":6886},{"id":6904,"depth":178,"text":6905,"children":7840},[7841,7842,7843,7844],{"id":6908,"depth":192,"text":6909},{"id":6919,"depth":192,"text":6920},{"id":6930,"depth":192,"text":6931},{"id":7031,"depth":192,"text":7032},{"id":7041,"depth":178,"text":7041,"children":7846},[7847,7848],{"id":7044,"depth":192,"text":7045},{"id":7418,"depth":192,"text":7419},{"id":7596,"depth":178,"text":7597,"children":7850},[7851,7854,7855],{"id":7600,"depth":192,"text":7601,"children":7852},[7853],{"id":7604,"depth":224,"text":7605},{"id":7704,"depth":192,"text":7705},{"id":7715,"depth":192,"text":7716,"children":7856},[7857],{"id":7719,"depth":224,"text":7720},"记录学习Linux过程中踩过的各种坑",{},"\u002Fwiki\u002Flinux\u002Flinux-1f4000d",{"title":5904,"description":7858},"wiki\u002Flinux\u002Flinux-1f4000d",[5728],"-GMqlCHh9LjzR-5MW1M4ua0h1OoLNPCYN9UbYCJgDHU",{"id":4,"title":5,"body":7866,"category":4071,"date":4072,"description":4073,"draft":4074,"extension":4075,"featured":4074,"meta":11099,"navigation":227,"path":4077,"seo":11100,"stem":4079,"tags":11101,"type":4081,"__hash__":4082},{"type":7,"value":7867,"toc":11079},[7868,7873,7878,7883,7885,7889,7951,7953,7960,8136,8138,8176,8182,8186,8190,8254,8256,8272,8274,8276,8344,8346,8412,8424,8426,8428,8439,8467,8469,8471,8473,8475,8495,8497,8653,8657,9889,9893,10557,10559,10573,10793,10797,10877,10883,11013,11015,11017,11019,11025,11077],[10,7869,12,7870],{},[14,7871,19],{"href":16,"rel":7872},[18],[10,7874,22,7875],{},[14,7876,27],{"href":25,"rel":7877},[18],[10,7879,30,7880],{},[14,7881,35],{"href":33,"rel":7882},[18],[37,7884,40],{"id":39},[10,7886,7887,47],{},[44,7888,46],{},[49,7890,7891,7903],{},[52,7892,7893],{},[55,7894,7895,7897,7899,7901],{},[58,7896,60],{},[58,7898,63],{},[58,7900,66],{},[58,7902,69],{},[71,7904,7905,7919,7931,7941],{},[55,7906,7907,7909,7915,7917],{},[76,7908,78],{},[76,7910,81,7911,86,7913,90],{},[83,7912,85],{},[83,7914,89],{},[76,7916,93],{},[76,7918,96],{},[55,7920,7921,7925,7927,7929],{},[76,7922,101,7923,105],{},[83,7924,104],{},[76,7926,108],{},[76,7928,111],{},[76,7930,114],{},[55,7932,7933,7935,7937,7939],{},[76,7934,119],{},[76,7936,122],{},[76,7938,125],{},[76,7940,128],{},[55,7942,7943,7945,7947,7949],{},[76,7944],{},[76,7946],{},[76,7948],{},[76,7950],{},[140,7952,143],{"id":142},[10,7954,146,7955,152,7958],{},[14,7956,151],{"href":149,"rel":7957},[18],[154,7959],{"alt":156,"src":157},[159,7961,7962],{"className":161,"code":162,"language":163,"meta":164,"style":164},[83,7963,7964,7968,7976,7998,8002,8006,8030,8034,8038,8044,8050,8058,8062,8066,8080,8098,8118,8122,8126,8132],{"__ignoreMap":164},[168,7965,7966],{"class":170,"line":171},[168,7967,175],{"class":174},[168,7969,7970,7972,7974],{"class":170,"line":178},[168,7971,182],{"class":181},[168,7973,186],{"class":185},[168,7975,189],{"class":185},[168,7977,7978,7980,7982,7984,7986,7988,7990,7992,7994,7996],{"class":170,"line":192},[168,7979,182],{"class":181},[168,7981,186],{"class":185},[168,7983,199],{"class":185},[168,7985,203],{"class":202},[168,7987,206],{"class":185},[168,7989,209],{"class":185},[168,7991,212],{"class":185},[168,7993,215],{"class":185},[168,7995,218],{"class":185},[168,7997,221],{"class":185},[168,7999,8000],{"class":170,"line":224},[168,8001,228],{"emptyLinePlaceholder":227},[168,8003,8004],{"class":170,"line":231},[168,8005,234],{"class":174},[168,8007,8008,8010,8012,8014,8016,8018,8020,8022,8024,8026,8028],{"class":170,"line":237},[168,8009,182],{"class":181},[168,8011,242],{"class":185},[168,8013,199],{"class":185},[168,8015,203],{"class":202},[168,8017,249],{"class":185},[168,8019,252],{"class":185},[168,8021,255],{"class":185},[168,8023,258],{"class":185},[168,8025,261],{"class":185},[168,8027,264],{"class":185},[168,8029,267],{"class":185},[168,8031,8032],{"class":170,"line":270},[168,8033,228],{"emptyLinePlaceholder":227},[168,8035,8036],{"class":170,"line":275},[168,8037,278],{"class":174},[168,8039,8040,8042],{"class":170,"line":281},[168,8041,284],{"class":202},[168,8043,287],{"class":185},[168,8045,8046,8048],{"class":170,"line":290},[168,8047,293],{"class":181},[168,8049,296],{"class":185},[168,8051,8052,8054,8056],{"class":170,"line":299},[168,8053,302],{"class":181},[168,8055,305],{"class":202},[168,8057,308],{"class":185},[168,8059,8060],{"class":170,"line":311},[168,8061,228],{"emptyLinePlaceholder":227},[168,8063,8064],{"class":170,"line":316},[168,8065,319],{"class":174},[168,8067,8068,8070,8072,8074,8076,8078],{"class":170,"line":322},[168,8069,326],{"class":325},[168,8071,330],{"class":329},[168,8073,333],{"class":325},[168,8075,336],{"class":185},[168,8077,339],{"class":329},[168,8079,342],{"class":185},[168,8081,8082,8084,8086,8088,8090,8092,8094,8096],{"class":170,"line":345},[168,8083,326],{"class":325},[168,8085,350],{"class":329},[168,8087,333],{"class":325},[168,8089,336],{"class":185},[168,8091,357],{"class":329},[168,8093,360],{"class":185},[168,8095,363],{"class":329},[168,8097,366],{"class":185},[168,8099,8100,8102,8104,8106,8108,8110,8112,8114,8116],{"class":170,"line":369},[168,8101,326],{"class":325},[168,8103,374],{"class":329},[168,8105,333],{"class":325},[168,8107,336],{"class":185},[168,8109,357],{"class":329},[168,8111,383],{"class":185},[168,8113,386],{"class":329},[168,8115,389],{"class":325},[168,8117,392],{"class":185},[168,8119,8120],{"class":170,"line":395},[168,8121,228],{"emptyLinePlaceholder":227},[168,8123,8124],{"class":170,"line":400},[168,8125,403],{"class":174},[168,8127,8128,8130],{"class":170,"line":406},[168,8129,89],{"class":181},[168,8131,411],{"class":202},[168,8133,8134],{"class":170,"line":414},[168,8135,417],{"class":181},[10,8137,420],{},[159,8139,8140],{"className":161,"code":423,"language":163,"meta":164,"style":164},[83,8141,8142,8154,8158,8162,8166,8170],{"__ignoreMap":164},[168,8143,8144,8146,8148,8150,8152],{"class":170,"line":171},[168,8145,430],{"class":181},[168,8147,433],{"class":325},[168,8149,436],{"class":185},[168,8151,439],{"class":325},[168,8153,442],{"class":185},[168,8155,8156],{"class":170,"line":178},[168,8157,447],{"class":185},[168,8159,8160],{"class":170,"line":192},[168,8161,452],{"class":185},[168,8163,8164],{"class":170,"line":224},[168,8165,457],{"class":185},[168,8167,8168],{"class":170,"line":231},[168,8169,462],{"class":185},[168,8171,8172,8174],{"class":170,"line":237},[168,8173,467],{"class":202},[168,8175,470],{"class":185},[10,8177,473,8178,86,8180,478],{},[83,8179,85],{},[83,8181,89],{},[140,8183,482,8184,485],{"id":481},[83,8185,104],{},[10,8187,488,8188,47],{},[83,8189,491],{},[159,8191,8192],{"className":161,"code":494,"language":163,"meta":164,"style":164},[83,8193,8194,8204,8212,8226,8238,8242,8246],{"__ignoreMap":164},[168,8195,8196,8198,8200,8202],{"class":170,"line":171},[168,8197,501],{"class":181},[168,8199,504],{"class":202},[168,8201,507],{"class":185},[168,8203,510],{"class":185},[168,8205,8206,8208,8210],{"class":170,"line":178},[168,8207,467],{"class":202},[168,8209,517],{"class":185},[168,8211,520],{"class":174},[168,8213,8214,8216,8218,8220,8222,8224],{"class":170,"line":192},[168,8215,525],{"class":181},[168,8217,504],{"class":202},[168,8219,530],{"class":185},[168,8221,199],{"class":185},[168,8223,535],{"class":202},[168,8225,538],{"class":185},[168,8227,8228,8230,8232,8234,8236],{"class":170,"line":224},[168,8229,525],{"class":181},[168,8231,504],{"class":202},[168,8233,530],{"class":185},[168,8235,199],{"class":185},[168,8237,551],{"class":185},[168,8239,8240],{"class":170,"line":231},[168,8241,228],{"emptyLinePlaceholder":227},[168,8243,8244],{"class":170,"line":237},[168,8245,560],{"class":174},[168,8247,8248,8250,8252],{"class":170,"line":270},[168,8249,525],{"class":181},[168,8251,567],{"class":202},[168,8253,570],{"class":185},[10,8255,573],{},[159,8257,8258],{"className":161,"code":576,"language":163,"meta":164,"style":164},[83,8259,8260],{"__ignoreMap":164},[168,8261,8262,8264,8266,8268,8270],{"class":170,"line":171},[168,8263,525],{"class":181},[168,8265,504],{"class":202},[168,8267,530],{"class":185},[168,8269,199],{"class":185},[168,8271,591],{"class":185},[140,8273,595],{"id":594},[10,8275,598],{},[159,8277,8278],{"className":161,"code":601,"language":163,"meta":164,"style":164},[83,8279,8280,8284,8292,8314,8318,8322],{"__ignoreMap":164},[168,8281,8282],{"class":170,"line":171},[168,8283,608],{"class":174},[168,8285,8286,8288,8290],{"class":170,"line":178},[168,8287,182],{"class":181},[168,8289,186],{"class":185},[168,8291,189],{"class":185},[168,8293,8294,8296,8298,8300,8302,8304,8306,8308,8310,8312],{"class":170,"line":192},[168,8295,182],{"class":181},[168,8297,186],{"class":185},[168,8299,199],{"class":185},[168,8301,203],{"class":202},[168,8303,629],{"class":185},[168,8305,632],{"class":185},[168,8307,635],{"class":185},[168,8309,638],{"class":185},[168,8311,641],{"class":185},[168,8313,644],{"class":185},[168,8315,8316],{"class":170,"line":224},[168,8317,228],{"emptyLinePlaceholder":227},[168,8319,8320],{"class":170,"line":231},[168,8321,653],{"class":174},[168,8323,8324,8326,8328,8330,8332,8334,8336,8338,8340,8342],{"class":170,"line":237},[168,8325,182],{"class":181},[168,8327,242],{"class":185},[168,8329,199],{"class":185},[168,8331,203],{"class":202},[168,8333,629],{"class":185},[168,8335,632],{"class":185},[168,8337,670],{"class":185},[168,8339,673],{"class":185},[168,8341,676],{"class":185},[168,8343,679],{"class":185},[10,8345,682],{},[159,8347,8348],{"className":161,"code":685,"language":163,"meta":164,"style":164},[83,8349,8350,8358,8364,8378,8394,8398,8402],{"__ignoreMap":164},[168,8351,8352,8354,8356],{"class":170,"line":171},[168,8353,692],{"class":181},[168,8355,695],{"class":185},[168,8357,698],{"class":185},[168,8359,8360,8362],{"class":170,"line":178},[168,8361,284],{"class":202},[168,8363,551],{"class":185},[168,8365,8366,8368,8370,8372,8374,8376],{"class":170,"line":192},[168,8367,709],{"class":181},[168,8369,712],{"class":202},[168,8371,715],{"class":185},[168,8373,718],{"class":202},[168,8375,721],{"class":185},[168,8377,724],{"class":202},[168,8379,8380,8382,8384,8386,8388,8390,8392],{"class":170,"line":224},[168,8381,709],{"class":181},[168,8383,731],{"class":202},[168,8385,721],{"class":185},[168,8387,736],{"class":202},[168,8389,739],{"class":185},[168,8391,742],{"class":181},[168,8393,745],{"class":185},[168,8395,8396],{"class":170,"line":231},[168,8397,228],{"emptyLinePlaceholder":227},[168,8399,8400],{"class":170,"line":237},[168,8401,754],{"class":174},[168,8403,8404,8406,8408,8410],{"class":170,"line":270},[168,8405,759],{"class":181},[168,8407,762],{"class":202},[168,8409,721],{"class":185},[168,8411,767],{"class":202},[10,8413,770,8414,774,8416,86,8418,781,8420,785,8422,788],{},[83,8415,773],{},[83,8417,777],{},[83,8419,780],{},[83,8421,784],{},[83,8423,386],{},[37,8425,792],{"id":791},[140,8427,796],{"id":795},[798,8429,8430,8437],{},[801,8431,803,8432,8435],{},[14,8433,808],{"href":806,"rel":8434},[18],[154,8436],{"alt":811,"src":812},[801,8438,815],{},[159,8440,8441],{"className":161,"code":818,"language":163,"meta":164,"style":164},[83,8442,8443,8447,8455,8459],{"__ignoreMap":164},[168,8444,8445],{"class":170,"line":171},[168,8446,825],{"class":174},[168,8448,8449,8451,8453],{"class":170,"line":178},[168,8450,830],{"class":181},[168,8452,833],{"class":185},[168,8454,836],{"class":185},[168,8456,8457],{"class":170,"line":192},[168,8458,841],{"class":174},[168,8460,8461,8463,8465],{"class":170,"line":224},[168,8462,846],{"class":181},[168,8464,833],{"class":185},[168,8466,836],{"class":185},[37,8468,854],{"id":853},[140,8470,858],{"id":857},[860,8472,863],{"id":862},[10,8474,866],{},[159,8476,8477],{"className":869,"code":870,"language":871,"meta":164,"style":164},[83,8478,8479,8483,8487,8491],{"__ignoreMap":164},[168,8480,8481],{"class":170,"line":171},[168,8482,878],{},[168,8484,8485],{"class":170,"line":178},[168,8486,883],{},[168,8488,8489],{"class":170,"line":192},[168,8490,228],{"emptyLinePlaceholder":227},[168,8492,8493],{"class":170,"line":224},[168,8494,892],{},[860,8496,896],{"id":895},[159,8498,8499],{"className":869,"code":899,"language":871,"meta":164,"style":164},[83,8500,8501,8505,8509,8513,8517,8521,8525,8529,8533,8537,8541,8545,8549,8553,8557,8561,8565,8569,8573,8577,8581,8585,8589,8593,8597,8601,8605,8609,8613,8617,8621,8625,8629,8633,8637,8641,8645,8649],{"__ignoreMap":164},[168,8502,8503],{"class":170,"line":171},[168,8504,906],{},[168,8506,8507],{"class":170,"line":178},[168,8508,228],{"emptyLinePlaceholder":227},[168,8510,8511],{"class":170,"line":192},[168,8512,915],{},[168,8514,8515],{"class":170,"line":224},[168,8516,920],{},[168,8518,8519],{"class":170,"line":231},[168,8520,228],{"emptyLinePlaceholder":227},[168,8522,8523],{"class":170,"line":237},[168,8524,929],{},[168,8526,8527],{"class":170,"line":270},[168,8528,228],{"emptyLinePlaceholder":227},[168,8530,8531],{"class":170,"line":275},[168,8532,938],{},[168,8534,8535],{"class":170,"line":281},[168,8536,228],{"emptyLinePlaceholder":227},[168,8538,8539],{"class":170,"line":290},[168,8540,947],{},[168,8542,8543],{"class":170,"line":299},[168,8544,952],{},[168,8546,8547],{"class":170,"line":311},[168,8548,957],{},[168,8550,8551],{"class":170,"line":316},[168,8552,962],{},[168,8554,8555],{"class":170,"line":322},[168,8556,952],{},[168,8558,8559],{"class":170,"line":345},[168,8560,971],{},[168,8562,8563],{"class":170,"line":369},[168,8564,952],{},[168,8566,8567],{"class":170,"line":395},[168,8568,980],{},[168,8570,8571],{"class":170,"line":400},[168,8572,985],{},[168,8574,8575],{"class":170,"line":406},[168,8576,952],{},[168,8578,8579],{"class":170,"line":414},[168,8580,971],{},[168,8582,8583],{"class":170,"line":996},[168,8584,952],{},[168,8586,8587],{"class":170,"line":1001},[168,8588,1004],{},[168,8590,8591],{"class":170,"line":1007},[168,8592,1010],{},[168,8594,8595],{"class":170,"line":1013},[168,8596,952],{},[168,8598,8599],{"class":170,"line":1018},[168,8600,1021],{},[168,8602,8603],{"class":170,"line":1024},[168,8604,1027],{},[168,8606,8607],{"class":170,"line":1030},[168,8608,952],{},[168,8610,8611],{"class":170,"line":1035},[168,8612,1038],{},[168,8614,8615],{"class":170,"line":1041},[168,8616,952],{},[168,8618,8619],{"class":170,"line":1046},[168,8620,1049],{},[168,8622,8623],{"class":170,"line":1052},[168,8624,1055],{},[168,8626,8627],{"class":170,"line":1058},[168,8628,952],{},[168,8630,8631],{"class":170,"line":1063},[168,8632,1066],{},[168,8634,8635],{"class":170,"line":1069},[168,8636,952],{},[168,8638,8639],{"class":170,"line":1074},[168,8640,1077],{},[168,8642,8643],{"class":170,"line":1080},[168,8644,1083],{},[168,8646,8647],{"class":170,"line":1086},[168,8648,228],{"emptyLinePlaceholder":227},[168,8650,8651],{"class":170,"line":1091},[168,8652,1094],{},[10,8654,8655],{},[83,8656,1099],{},[159,8658,8659],{"className":869,"code":1102,"language":871,"meta":164,"style":164},[83,8660,8661,8665,8669,8673,8677,8681,8685,8689,8693,8697,8701,8705,8709,8713,8717,8721,8725,8729,8733,8737,8741,8745,8749,8753,8757,8761,8765,8769,8773,8777,8781,8785,8789,8793,8797,8801,8805,8809,8813,8817,8821,8825,8829,8833,8837,8841,8845,8849,8853,8857,8861,8865,8869,8873,8877,8881,8885,8889,8893,8897,8901,8905,8909,8913,8917,8921,8925,8929,8933,8937,8941,8945,8949,8953,8957,8961,8965,8969,8973,8977,8981,8985,8989,8993,8997,9001,9005,9009,9013,9017,9021,9025,9029,9033,9037,9041,9045,9049,9053,9057,9061,9065,9069,9073,9077,9081,9085,9089,9093,9097,9101,9105,9109,9113,9117,9121,9125,9129,9133,9137,9141,9145,9149,9153,9157,9161,9165,9169,9173,9177,9181,9185,9189,9193,9197,9201,9205,9209,9213,9217,9221,9225,9229,9233,9237,9241,9245,9249,9253,9257,9261,9265,9269,9273,9277,9281,9285,9289,9293,9297,9301,9305,9309,9313,9317,9321,9325,9329,9333,9337,9341,9345,9349,9353,9357,9361,9365,9369,9373,9377,9381,9385,9389,9393,9397,9401,9405,9409,9413,9417,9421,9425,9429,9433,9437,9441,9445,9449,9453,9457,9461,9465,9469,9473,9477,9481,9485,9489,9493,9497,9501,9505,9509,9513,9517,9521,9525,9529,9533,9537,9541,9545,9549,9553,9557,9561,9565,9569,9573,9577,9581,9585,9589,9593,9597,9601,9605,9609,9613,9617,9621,9625,9629,9633,9637,9641,9645,9649,9653,9657,9661,9665,9669,9673,9677,9681,9685,9689,9693,9697,9701,9705,9709,9713,9717,9721,9725,9729,9733,9737,9741,9745,9749,9753,9757,9761,9765,9769,9773,9777,9781,9785,9789,9793,9797,9801,9805,9809,9813,9817,9821,9825,9829,9833,9837,9841,9845,9849,9853,9857,9861,9865,9869,9873,9877,9881,9885],{"__ignoreMap":164},[168,8662,8663],{"class":170,"line":171},[168,8664,915],{},[168,8666,8667],{"class":170,"line":178},[168,8668,228],{"emptyLinePlaceholder":227},[168,8670,8671],{"class":170,"line":192},[168,8672,1117],{},[168,8674,8675],{"class":170,"line":224},[168,8676,228],{"emptyLinePlaceholder":227},[168,8678,8679],{"class":170,"line":231},[168,8680,1126],{},[168,8682,8683],{"class":170,"line":237},[168,8684,228],{"emptyLinePlaceholder":227},[168,8686,8687],{"class":170,"line":270},[168,8688,1135],{},[168,8690,8691],{"class":170,"line":275},[168,8692,228],{"emptyLinePlaceholder":227},[168,8694,8695],{"class":170,"line":281},[168,8696,938],{},[168,8698,8699],{"class":170,"line":290},[168,8700,228],{"emptyLinePlaceholder":227},[168,8702,8703],{"class":170,"line":299},[168,8704,1152],{},[168,8706,8707],{"class":170,"line":311},[168,8708,228],{"emptyLinePlaceholder":227},[168,8710,8711],{"class":170,"line":316},[168,8712,1161],{},[168,8714,8715],{"class":170,"line":322},[168,8716,228],{"emptyLinePlaceholder":227},[168,8718,8719],{"class":170,"line":345},[168,8720,1170],{},[168,8722,8723],{"class":170,"line":369},[168,8724,228],{"emptyLinePlaceholder":227},[168,8726,8727],{"class":170,"line":395},[168,8728,1179],{},[168,8730,8731],{"class":170,"line":400},[168,8732,228],{"emptyLinePlaceholder":227},[168,8734,8735],{"class":170,"line":406},[168,8736,1188],{},[168,8738,8739],{"class":170,"line":414},[168,8740,228],{"emptyLinePlaceholder":227},[168,8742,8743],{"class":170,"line":996},[168,8744,1197],{},[168,8746,8747],{"class":170,"line":1001},[168,8748,228],{"emptyLinePlaceholder":227},[168,8750,8751],{"class":170,"line":1007},[168,8752,1206],{},[168,8754,8755],{"class":170,"line":1013},[168,8756,228],{"emptyLinePlaceholder":227},[168,8758,8759],{"class":170,"line":1018},[168,8760,1215],{},[168,8762,8763],{"class":170,"line":1024},[168,8764,228],{"emptyLinePlaceholder":227},[168,8766,8767],{"class":170,"line":1030},[168,8768,1224],{},[168,8770,8771],{"class":170,"line":1035},[168,8772,228],{"emptyLinePlaceholder":227},[168,8774,8775],{"class":170,"line":1041},[168,8776,1233],{},[168,8778,8779],{"class":170,"line":1046},[168,8780,228],{"emptyLinePlaceholder":227},[168,8782,8783],{"class":170,"line":1052},[168,8784,1242],{},[168,8786,8787],{"class":170,"line":1058},[168,8788,228],{"emptyLinePlaceholder":227},[168,8790,8791],{"class":170,"line":1063},[168,8792,1094],{},[168,8794,8795],{"class":170,"line":1069},[168,8796,228],{"emptyLinePlaceholder":227},[168,8798,8799],{"class":170,"line":1074},[168,8800,1126],{},[168,8802,8803],{"class":170,"line":1080},[168,8804,228],{"emptyLinePlaceholder":227},[168,8806,8807],{"class":170,"line":1086},[168,8808,1267],{},[168,8810,8811],{"class":170,"line":1091},[168,8812,228],{"emptyLinePlaceholder":227},[168,8814,8815],{"class":170,"line":1274},[168,8816,1277],{},[168,8818,8819],{"class":170,"line":1280},[168,8820,228],{"emptyLinePlaceholder":227},[168,8822,8823],{"class":170,"line":1285},[168,8824,938],{},[168,8826,8827],{"class":170,"line":1290},[168,8828,228],{"emptyLinePlaceholder":227},[168,8830,8831],{"class":170,"line":1295},[168,8832,883],{},[168,8834,8835],{"class":170,"line":1300},[168,8836,228],{"emptyLinePlaceholder":227},[168,8838,8839],{"class":170,"line":1305},[168,8840,1308],{},[168,8842,8843],{"class":170,"line":1311},[168,8844,228],{"emptyLinePlaceholder":227},[168,8846,8847],{"class":170,"line":1316},[168,8848,1319],{},[168,8850,8851],{"class":170,"line":1322},[168,8852,228],{"emptyLinePlaceholder":227},[168,8854,8855],{"class":170,"line":1327},[168,8856,1330],{},[168,8858,8859],{"class":170,"line":1333},[168,8860,228],{"emptyLinePlaceholder":227},[168,8862,8863],{"class":170,"line":1338},[168,8864,1341],{},[168,8866,8867],{"class":170,"line":1344},[168,8868,228],{"emptyLinePlaceholder":227},[168,8870,8871],{"class":170,"line":1349},[168,8872,1094],{},[168,8874,8875],{"class":170,"line":1354},[168,8876,228],{"emptyLinePlaceholder":227},[168,8878,8879],{"class":170,"line":1359},[168,8880,1362],{},[168,8882,8883],{"class":170,"line":1365},[168,8884,228],{"emptyLinePlaceholder":227},[168,8886,8887],{"class":170,"line":1370},[168,8888,1373],{},[168,8890,8891],{"class":170,"line":1376},[168,8892,228],{"emptyLinePlaceholder":227},[168,8894,8895],{"class":170,"line":1381},[168,8896,1094],{},[168,8898,8899],{"class":170,"line":1386},[168,8900,228],{"emptyLinePlaceholder":227},[168,8902,8903],{"class":170,"line":1391},[168,8904,1126],{},[168,8906,8907],{"class":170,"line":1396},[168,8908,228],{"emptyLinePlaceholder":227},[168,8910,8911],{"class":170,"line":1401},[168,8912,1404],{},[168,8914,8915],{"class":170,"line":1407},[168,8916,228],{"emptyLinePlaceholder":227},[168,8918,8919],{"class":170,"line":1412},[168,8920,1415],{},[168,8922,8923],{"class":170,"line":1418},[168,8924,228],{"emptyLinePlaceholder":227},[168,8926,8927],{"class":170,"line":1423},[168,8928,938],{},[168,8930,8931],{"class":170,"line":1428},[168,8932,228],{"emptyLinePlaceholder":227},[168,8934,8935],{"class":170,"line":1433},[168,8936,1436],{},[168,8938,8939],{"class":170,"line":1439},[168,8940,228],{"emptyLinePlaceholder":227},[168,8942,8943],{"class":170,"line":1444},[168,8944,1447],{},[168,8946,8947],{"class":170,"line":1450},[168,8948,228],{"emptyLinePlaceholder":227},[168,8950,8951],{"class":170,"line":1455},[168,8952,1341],{},[168,8954,8955],{"class":170,"line":1460},[168,8956,228],{"emptyLinePlaceholder":227},[168,8958,8959],{"class":170,"line":1465},[168,8960,1094],{},[168,8962,8963],{"class":170,"line":1470},[168,8964,228],{"emptyLinePlaceholder":227},[168,8966,8967],{"class":170,"line":1475},[168,8968,1126],{},[168,8970,8971],{"class":170,"line":1480},[168,8972,228],{"emptyLinePlaceholder":227},[168,8974,8975],{"class":170,"line":1485},[168,8976,1488],{},[168,8978,8979],{"class":170,"line":1491},[168,8980,228],{"emptyLinePlaceholder":227},[168,8982,8983],{"class":170,"line":1496},[168,8984,1499],{},[168,8986,8987],{"class":170,"line":1502},[168,8988,228],{"emptyLinePlaceholder":227},[168,8990,8991],{"class":170,"line":1507},[168,8992,1510],{},[168,8994,8995],{"class":170,"line":1513},[168,8996,228],{"emptyLinePlaceholder":227},[168,8998,8999],{"class":170,"line":1518},[168,9000,1341],{},[168,9002,9003],{"class":170,"line":1523},[168,9004,228],{"emptyLinePlaceholder":227},[168,9006,9007],{"class":170,"line":1528},[168,9008,1094],{},[168,9010,9011],{"class":170,"line":1533},[168,9012,228],{"emptyLinePlaceholder":227},[168,9014,9015],{"class":170,"line":1538},[168,9016,1126],{},[168,9018,9019],{"class":170,"line":1543},[168,9020,228],{"emptyLinePlaceholder":227},[168,9022,9023],{"class":170,"line":1548},[168,9024,1551],{},[168,9026,9027],{"class":170,"line":1554},[168,9028,228],{"emptyLinePlaceholder":227},[168,9030,9031],{"class":170,"line":1559},[168,9032,1562],{},[168,9034,9035],{"class":170,"line":1565},[168,9036,228],{"emptyLinePlaceholder":227},[168,9038,9039],{"class":170,"line":1570},[168,9040,1126],{},[168,9042,9043],{"class":170,"line":1575},[168,9044,228],{"emptyLinePlaceholder":227},[168,9046,9047],{"class":170,"line":1580},[168,9048,1583],{},[168,9050,9051],{"class":170,"line":1586},[168,9052,228],{"emptyLinePlaceholder":227},[168,9054,9055],{"class":170,"line":1591},[168,9056,1594],{},[168,9058,9059],{"class":170,"line":1597},[168,9060,228],{"emptyLinePlaceholder":227},[168,9062,9063],{"class":170,"line":1602},[168,9064,1126],{},[168,9066,9067],{"class":170,"line":1607},[168,9068,228],{"emptyLinePlaceholder":227},[168,9070,9071],{"class":170,"line":1612},[168,9072,1615],{},[168,9074,9075],{"class":170,"line":1618},[168,9076,228],{"emptyLinePlaceholder":227},[168,9078,9079],{"class":170,"line":1623},[168,9080,1626],{},[168,9082,9083],{"class":170,"line":1629},[168,9084,228],{"emptyLinePlaceholder":227},[168,9086,9087],{"class":170,"line":1634},[168,9088,1637],{},[168,9090,9091],{"class":170,"line":1640},[168,9092,228],{"emptyLinePlaceholder":227},[168,9094,9095],{"class":170,"line":1645},[168,9096,1648],{},[168,9098,9099],{"class":170,"line":1651},[168,9100,228],{"emptyLinePlaceholder":227},[168,9102,9103],{"class":170,"line":1656},[168,9104,1659],{},[168,9106,9107],{"class":170,"line":1662},[168,9108,228],{"emptyLinePlaceholder":227},[168,9110,9111],{"class":170,"line":1667},[168,9112,1126],{},[168,9114,9115],{"class":170,"line":1672},[168,9116,228],{"emptyLinePlaceholder":227},[168,9118,9119],{"class":170,"line":1677},[168,9120,1680],{},[168,9122,9123],{"class":170,"line":1683},[168,9124,228],{"emptyLinePlaceholder":227},[168,9126,9127],{"class":170,"line":1688},[168,9128,1691],{},[168,9130,9131],{"class":170,"line":1694},[168,9132,228],{"emptyLinePlaceholder":227},[168,9134,9135],{"class":170,"line":1699},[168,9136,1702],{},[168,9138,9139],{"class":170,"line":1705},[168,9140,228],{"emptyLinePlaceholder":227},[168,9142,9143],{"class":170,"line":1710},[168,9144,1713],{},[168,9146,9147],{"class":170,"line":1716},[168,9148,228],{"emptyLinePlaceholder":227},[168,9150,9151],{"class":170,"line":1721},[168,9152,1724],{},[168,9154,9155],{"class":170,"line":1727},[168,9156,228],{"emptyLinePlaceholder":227},[168,9158,9159],{"class":170,"line":1732},[168,9160,1126],{},[168,9162,9163],{"class":170,"line":1737},[168,9164,228],{"emptyLinePlaceholder":227},[168,9166,9167],{"class":170,"line":1742},[168,9168,1745],{},[168,9170,9171],{"class":170,"line":1748},[168,9172,228],{"emptyLinePlaceholder":227},[168,9174,9175],{"class":170,"line":1753},[168,9176,1756],{},[168,9178,9179],{"class":170,"line":1759},[168,9180,228],{"emptyLinePlaceholder":227},[168,9182,9183],{"class":170,"line":1764},[168,9184,1126],{},[168,9186,9187],{"class":170,"line":1769},[168,9188,228],{"emptyLinePlaceholder":227},[168,9190,9191],{"class":170,"line":1774},[168,9192,1777],{},[168,9194,9195],{"class":170,"line":1780},[168,9196,228],{"emptyLinePlaceholder":227},[168,9198,9199],{"class":170,"line":1785},[168,9200,1373],{},[168,9202,9203],{"class":170,"line":1790},[168,9204,228],{"emptyLinePlaceholder":227},[168,9206,9207],{"class":170,"line":1795},[168,9208,1094],{},[168,9210,9211],{"class":170,"line":1800},[168,9212,228],{"emptyLinePlaceholder":227},[168,9214,9215],{"class":170,"line":1805},[168,9216,1126],{},[168,9218,9219],{"class":170,"line":1810},[168,9220,228],{"emptyLinePlaceholder":227},[168,9222,9223],{"class":170,"line":1815},[168,9224,1818],{},[168,9226,9227],{"class":170,"line":1821},[168,9228,228],{"emptyLinePlaceholder":227},[168,9230,9231],{"class":170,"line":1826},[168,9232,1829],{},[168,9234,9235],{"class":170,"line":1832},[168,9236,228],{"emptyLinePlaceholder":227},[168,9238,9239],{"class":170,"line":1837},[168,9240,938],{},[168,9242,9243],{"class":170,"line":1842},[168,9244,228],{"emptyLinePlaceholder":227},[168,9246,9247],{"class":170,"line":1847},[168,9248,1850],{},[168,9250,9251],{"class":170,"line":1853},[168,9252,228],{"emptyLinePlaceholder":227},[168,9254,9255],{"class":170,"line":1858},[168,9256,1861],{},[168,9258,9259],{"class":170,"line":1864},[168,9260,228],{"emptyLinePlaceholder":227},[168,9262,9263],{"class":170,"line":1869},[168,9264,1872],{},[168,9266,9267],{"class":170,"line":1875},[168,9268,228],{"emptyLinePlaceholder":227},[168,9270,9271],{"class":170,"line":1880},[168,9272,1094],{},[168,9274,9275],{"class":170,"line":1885},[168,9276,228],{"emptyLinePlaceholder":227},[168,9278,9279],{"class":170,"line":1890},[168,9280,1126],{},[168,9282,9283],{"class":170,"line":1895},[168,9284,228],{"emptyLinePlaceholder":227},[168,9286,9287],{"class":170,"line":1900},[168,9288,1903],{},[168,9290,9291],{"class":170,"line":1906},[168,9292,228],{"emptyLinePlaceholder":227},[168,9294,9295],{"class":170,"line":1911},[168,9296,1914],{},[168,9298,9299],{"class":170,"line":1917},[168,9300,228],{"emptyLinePlaceholder":227},[168,9302,9303],{"class":170,"line":1922},[168,9304,938],{},[168,9306,9307],{"class":170,"line":1927},[168,9308,228],{"emptyLinePlaceholder":227},[168,9310,9311],{"class":170,"line":1932},[168,9312,1935],{},[168,9314,9315],{"class":170,"line":1938},[168,9316,228],{"emptyLinePlaceholder":227},[168,9318,9319],{"class":170,"line":1943},[168,9320,938],{},[168,9322,9323],{"class":170,"line":1948},[168,9324,228],{"emptyLinePlaceholder":227},[168,9326,9327],{"class":170,"line":1953},[168,9328,1956],{},[168,9330,9331],{"class":170,"line":1959},[168,9332,228],{"emptyLinePlaceholder":227},[168,9334,9335],{"class":170,"line":1964},[168,9336,1967],{},[168,9338,9339],{"class":170,"line":1970},[168,9340,228],{"emptyLinePlaceholder":227},[168,9342,9343],{"class":170,"line":1975},[168,9344,1978],{},[168,9346,9347],{"class":170,"line":1981},[168,9348,228],{"emptyLinePlaceholder":227},[168,9350,9351],{"class":170,"line":1986},[168,9352,938],{},[168,9354,9355],{"class":170,"line":1991},[168,9356,228],{"emptyLinePlaceholder":227},[168,9358,9359],{"class":170,"line":1996},[168,9360,1999],{},[168,9362,9363],{"class":170,"line":2002},[168,9364,228],{"emptyLinePlaceholder":227},[168,9366,9367],{"class":170,"line":2007},[168,9368,2010],{},[168,9370,9371],{"class":170,"line":2013},[168,9372,228],{"emptyLinePlaceholder":227},[168,9374,9375],{"class":170,"line":2018},[168,9376,1094],{},[168,9378,9379],{"class":170,"line":2023},[168,9380,228],{"emptyLinePlaceholder":227},[168,9382,9383],{"class":170,"line":2028},[168,9384,1126],{},[168,9386,9387],{"class":170,"line":2033},[168,9388,228],{"emptyLinePlaceholder":227},[168,9390,9391],{"class":170,"line":2038},[168,9392,2041],{},[168,9394,9395],{"class":170,"line":2044},[168,9396,228],{"emptyLinePlaceholder":227},[168,9398,9399],{"class":170,"line":2049},[168,9400,2052],{},[168,9402,9403],{"class":170,"line":2055},[168,9404,228],{"emptyLinePlaceholder":227},[168,9406,9407],{"class":170,"line":2060},[168,9408,2063],{},[168,9410,9411],{"class":170,"line":2066},[168,9412,228],{"emptyLinePlaceholder":227},[168,9414,9415],{"class":170,"line":2071},[168,9416,1126],{},[168,9418,9419],{"class":170,"line":2076},[168,9420,228],{"emptyLinePlaceholder":227},[168,9422,9423],{"class":170,"line":2081},[168,9424,2084],{},[168,9426,9427],{"class":170,"line":2087},[168,9428,228],{"emptyLinePlaceholder":227},[168,9430,9431],{"class":170,"line":2092},[168,9432,2095],{},[168,9434,9435],{"class":170,"line":2098},[168,9436,228],{"emptyLinePlaceholder":227},[168,9438,9439],{"class":170,"line":2103},[168,9440,2106],{},[168,9442,9443],{"class":170,"line":2109},[168,9444,228],{"emptyLinePlaceholder":227},[168,9446,9447],{"class":170,"line":2114},[168,9448,2117],{},[168,9450,9451],{"class":170,"line":2120},[168,9452,228],{"emptyLinePlaceholder":227},[168,9454,9455],{"class":170,"line":2125},[168,9456,1094],{},[168,9458,9459],{"class":170,"line":2130},[168,9460,228],{"emptyLinePlaceholder":227},[168,9462,9463],{"class":170,"line":2135},[168,9464,1094],{},[168,9466,9467],{"class":170,"line":2140},[168,9468,228],{"emptyLinePlaceholder":227},[168,9470,9471],{"class":170,"line":2145},[168,9472,1126],{},[168,9474,9475],{"class":170,"line":2150},[168,9476,228],{"emptyLinePlaceholder":227},[168,9478,9479],{"class":170,"line":2155},[168,9480,2158],{},[168,9482,9483],{"class":170,"line":2161},[168,9484,228],{"emptyLinePlaceholder":227},[168,9486,9487],{"class":170,"line":2166},[168,9488,2169],{},[168,9490,9491],{"class":170,"line":2172},[168,9492,228],{"emptyLinePlaceholder":227},[168,9494,9495],{"class":170,"line":2177},[168,9496,938],{},[168,9498,9499],{"class":170,"line":2182},[168,9500,228],{"emptyLinePlaceholder":227},[168,9502,9503],{"class":170,"line":2187},[168,9504,2190],{},[168,9506,9507],{"class":170,"line":2193},[168,9508,228],{"emptyLinePlaceholder":227},[168,9510,9511],{"class":170,"line":2198},[168,9512,2201],{},[168,9514,9515],{"class":170,"line":2204},[168,9516,228],{"emptyLinePlaceholder":227},[168,9518,9519],{"class":170,"line":2209},[168,9520,1126],{},[168,9522,9523],{"class":170,"line":2214},[168,9524,228],{"emptyLinePlaceholder":227},[168,9526,9527],{"class":170,"line":2219},[168,9528,2222],{},[168,9530,9531],{"class":170,"line":2225},[168,9532,228],{"emptyLinePlaceholder":227},[168,9534,9535],{"class":170,"line":2230},[168,9536,2233],{},[168,9538,9539],{"class":170,"line":2236},[168,9540,228],{"emptyLinePlaceholder":227},[168,9542,9543],{"class":170,"line":2241},[168,9544,2244],{},[168,9546,9547],{"class":170,"line":2247},[168,9548,228],{"emptyLinePlaceholder":227},[168,9550,9551],{"class":170,"line":2252},[168,9552,2255],{},[168,9554,9555],{"class":170,"line":2258},[168,9556,228],{"emptyLinePlaceholder":227},[168,9558,9559],{"class":170,"line":2263},[168,9560,1094],{},[168,9562,9563],{"class":170,"line":2268},[168,9564,228],{"emptyLinePlaceholder":227},[168,9566,9567],{"class":170,"line":2273},[168,9568,1094],{},[168,9570,9571],{"class":170,"line":2278},[168,9572,228],{"emptyLinePlaceholder":227},[168,9574,9575],{"class":170,"line":2283},[168,9576,1126],{},[168,9578,9579],{"class":170,"line":2288},[168,9580,228],{"emptyLinePlaceholder":227},[168,9582,9583],{"class":170,"line":2293},[168,9584,2296],{},[168,9586,9587],{"class":170,"line":2299},[168,9588,228],{"emptyLinePlaceholder":227},[168,9590,9591],{"class":170,"line":2304},[168,9592,2307],{},[168,9594,9595],{"class":170,"line":2310},[168,9596,228],{"emptyLinePlaceholder":227},[168,9598,9599],{"class":170,"line":2315},[168,9600,938],{},[168,9602,9603],{"class":170,"line":2320},[168,9604,228],{"emptyLinePlaceholder":227},[168,9606,9607],{"class":170,"line":2325},[168,9608,2328],{},[168,9610,9611],{"class":170,"line":2331},[168,9612,228],{"emptyLinePlaceholder":227},[168,9614,9615],{"class":170,"line":2336},[168,9616,2339],{},[168,9618,9619],{"class":170,"line":2342},[168,9620,228],{"emptyLinePlaceholder":227},[168,9622,9623],{"class":170,"line":2347},[168,9624,2350],{},[168,9626,9627],{"class":170,"line":2353},[168,9628,228],{"emptyLinePlaceholder":227},[168,9630,9631],{"class":170,"line":2358},[168,9632,1126],{},[168,9634,9635],{"class":170,"line":2363},[168,9636,228],{"emptyLinePlaceholder":227},[168,9638,9639],{"class":170,"line":2368},[168,9640,2371],{},[168,9642,9643],{"class":170,"line":2374},[168,9644,228],{"emptyLinePlaceholder":227},[168,9646,9647],{"class":170,"line":2379},[168,9648,1094],{},[168,9650,9651],{"class":170,"line":2384},[168,9652,228],{"emptyLinePlaceholder":227},[168,9654,9655],{"class":170,"line":2389},[168,9656,1126],{},[168,9658,9659],{"class":170,"line":2394},[168,9660,228],{"emptyLinePlaceholder":227},[168,9662,9663],{"class":170,"line":2399},[168,9664,2402],{},[168,9666,9667],{"class":170,"line":2405},[168,9668,228],{"emptyLinePlaceholder":227},[168,9670,9671],{"class":170,"line":2410},[168,9672,2413],{},[168,9674,9675],{"class":170,"line":2416},[168,9676,228],{"emptyLinePlaceholder":227},[168,9678,9679],{"class":170,"line":2421},[168,9680,938],{},[168,9682,9683],{"class":170,"line":2426},[168,9684,228],{"emptyLinePlaceholder":227},[168,9686,9687],{"class":170,"line":2431},[168,9688,2434],{},[168,9690,9691],{"class":170,"line":2437},[168,9692,228],{"emptyLinePlaceholder":227},[168,9694,9695],{"class":170,"line":2442},[168,9696,1126],{},[168,9698,9699],{"class":170,"line":2447},[168,9700,228],{"emptyLinePlaceholder":227},[168,9702,9703],{"class":170,"line":2452},[168,9704,2455],{},[168,9706,9707],{"class":170,"line":2458},[168,9708,228],{"emptyLinePlaceholder":227},[168,9710,9711],{"class":170,"line":2463},[168,9712,2466],{},[168,9714,9715],{"class":170,"line":2469},[168,9716,228],{"emptyLinePlaceholder":227},[168,9718,9719],{"class":170,"line":2474},[168,9720,2477],{},[168,9722,9723],{"class":170,"line":2480},[168,9724,228],{"emptyLinePlaceholder":227},[168,9726,9727],{"class":170,"line":2485},[168,9728,2488],{},[168,9730,9731],{"class":170,"line":2491},[168,9732,228],{"emptyLinePlaceholder":227},[168,9734,9735],{"class":170,"line":2496},[168,9736,1126],{},[168,9738,9739],{"class":170,"line":2501},[168,9740,228],{"emptyLinePlaceholder":227},[168,9742,9743],{"class":170,"line":2506},[168,9744,2509],{},[168,9746,9747],{"class":170,"line":2512},[168,9748,228],{"emptyLinePlaceholder":227},[168,9750,9751],{"class":170,"line":2517},[168,9752,2520],{},[168,9754,9755],{"class":170,"line":2523},[168,9756,228],{"emptyLinePlaceholder":227},[168,9758,9759],{"class":170,"line":2528},[168,9760,1126],{},[168,9762,9763],{"class":170,"line":2533},[168,9764,228],{"emptyLinePlaceholder":227},[168,9766,9767],{"class":170,"line":2538},[168,9768,2541],{},[168,9770,9771],{"class":170,"line":2544},[168,9772,228],{"emptyLinePlaceholder":227},[168,9774,9775],{"class":170,"line":2549},[168,9776,2552],{},[168,9778,9779],{"class":170,"line":2555},[168,9780,228],{"emptyLinePlaceholder":227},[168,9782,9783],{"class":170,"line":2560},[168,9784,1126],{},[168,9786,9787],{"class":170,"line":2565},[168,9788,228],{"emptyLinePlaceholder":227},[168,9790,9791],{"class":170,"line":2570},[168,9792,2573],{},[168,9794,9795],{"class":170,"line":2576},[168,9796,228],{"emptyLinePlaceholder":227},[168,9798,9799],{"class":170,"line":2581},[168,9800,2584],{},[168,9802,9803],{"class":170,"line":2587},[168,9804,228],{"emptyLinePlaceholder":227},[168,9806,9807],{"class":170,"line":2592},[168,9808,2595],{},[168,9810,9811],{"class":170,"line":2598},[168,9812,228],{"emptyLinePlaceholder":227},[168,9814,9815],{"class":170,"line":2603},[168,9816,2606],{},[168,9818,9819],{"class":170,"line":2609},[168,9820,228],{"emptyLinePlaceholder":227},[168,9822,9823],{"class":170,"line":2614},[168,9824,1126],{},[168,9826,9827],{"class":170,"line":2619},[168,9828,228],{"emptyLinePlaceholder":227},[168,9830,9831],{"class":170,"line":2624},[168,9832,2627],{},[168,9834,9835],{"class":170,"line":2630},[168,9836,228],{"emptyLinePlaceholder":227},[168,9838,9839],{"class":170,"line":2635},[168,9840,1094],{},[168,9842,9843],{"class":170,"line":2640},[168,9844,228],{"emptyLinePlaceholder":227},[168,9846,9847],{"class":170,"line":2645},[168,9848,1126],{},[168,9850,9851],{"class":170,"line":2650},[168,9852,228],{"emptyLinePlaceholder":227},[168,9854,9855],{"class":170,"line":2655},[168,9856,2658],{},[168,9858,9859],{"class":170,"line":2661},[168,9860,228],{"emptyLinePlaceholder":227},[168,9862,9863],{"class":170,"line":2666},[168,9864,2669],{},[168,9866,9867],{"class":170,"line":2672},[168,9868,228],{"emptyLinePlaceholder":227},[168,9870,9871],{"class":170,"line":2677},[168,9872,938],{},[168,9874,9875],{"class":170,"line":2682},[168,9876,228],{"emptyLinePlaceholder":227},[168,9878,9879],{"class":170,"line":2687},[168,9880,2690],{},[168,9882,9883],{"class":170,"line":2693},[168,9884,228],{"emptyLinePlaceholder":227},[168,9886,9887],{"class":170,"line":2698},[168,9888,1094],{},[10,9890,9891],{},[83,9892,2705],{},[159,9894,9895],{"className":869,"code":2708,"language":871,"meta":164,"style":164},[83,9896,9897,9901,9905,9909,9913,9917,9921,9925,9929,9933,9937,9941,9945,9949,9953,9957,9961,9965,9969,9973,9977,9981,9985,9989,9993,9997,10001,10005,10009,10013,10017,10021,10025,10029,10033,10037,10041,10045,10049,10053,10057,10061,10065,10069,10073,10077,10081,10085,10089,10093,10097,10101,10105,10109,10113,10117,10121,10125,10129,10133,10137,10141,10145,10149,10153,10157,10161,10165,10169,10173,10177,10181,10185,10189,10193,10197,10201,10205,10209,10213,10217,10221,10225,10229,10233,10237,10241,10245,10249,10253,10257,10261,10265,10269,10273,10277,10281,10285,10289,10293,10297,10301,10305,10309,10313,10317,10321,10325,10329,10333,10337,10341,10345,10349,10353,10357,10361,10365,10369,10373,10377,10381,10385,10389,10393,10397,10401,10405,10409,10413,10417,10421,10425,10429,10433,10437,10441,10445,10449,10453,10457,10461,10465,10469,10473,10477,10481,10485,10489,10493,10497,10501,10505,10509,10513,10517,10521,10525,10529,10533,10537,10541,10545,10549,10553],{"__ignoreMap":164},[168,9898,9899],{"class":170,"line":171},[168,9900,2715],{},[168,9902,9903],{"class":170,"line":178},[168,9904,228],{"emptyLinePlaceholder":227},[168,9906,9907],{"class":170,"line":192},[168,9908,2724],{},[168,9910,9911],{"class":170,"line":224},[168,9912,2729],{},[168,9914,9915],{"class":170,"line":231},[168,9916,2734],{},[168,9918,9919],{"class":170,"line":237},[168,9920,228],{"emptyLinePlaceholder":227},[168,9922,9923],{"class":170,"line":270},[168,9924,1126],{},[168,9926,9927],{"class":170,"line":275},[168,9928,228],{"emptyLinePlaceholder":227},[168,9930,9931],{"class":170,"line":281},[168,9932,2751],{},[168,9934,9935],{"class":170,"line":290},[168,9936,228],{"emptyLinePlaceholder":227},[168,9938,9939],{"class":170,"line":299},[168,9940,2760],{},[168,9942,9943],{"class":170,"line":311},[168,9944,228],{"emptyLinePlaceholder":227},[168,9946,9947],{"class":170,"line":316},[168,9948,2769],{},[168,9950,9951],{"class":170,"line":322},[168,9952,228],{"emptyLinePlaceholder":227},[168,9954,9955],{"class":170,"line":345},[168,9956,2778],{},[168,9958,9959],{"class":170,"line":369},[168,9960,228],{"emptyLinePlaceholder":227},[168,9962,9963],{"class":170,"line":395},[168,9964,1126],{},[168,9966,9967],{"class":170,"line":400},[168,9968,228],{"emptyLinePlaceholder":227},[168,9970,9971],{"class":170,"line":406},[168,9972,2795],{},[168,9974,9975],{"class":170,"line":414},[168,9976,228],{"emptyLinePlaceholder":227},[168,9978,9979],{"class":170,"line":996},[168,9980,2804],{},[168,9982,9983],{"class":170,"line":1001},[168,9984,228],{"emptyLinePlaceholder":227},[168,9986,9987],{"class":170,"line":1007},[168,9988,2813],{},[168,9990,9991],{"class":170,"line":1013},[168,9992,228],{"emptyLinePlaceholder":227},[168,9994,9995],{"class":170,"line":1018},[168,9996,1126],{},[168,9998,9999],{"class":170,"line":1024},[168,10000,228],{"emptyLinePlaceholder":227},[168,10002,10003],{"class":170,"line":1030},[168,10004,2830],{},[168,10006,10007],{"class":170,"line":1035},[168,10008,228],{"emptyLinePlaceholder":227},[168,10010,10011],{"class":170,"line":1041},[168,10012,2839],{},[168,10014,10015],{"class":170,"line":1046},[168,10016,228],{"emptyLinePlaceholder":227},[168,10018,10019],{"class":170,"line":1052},[168,10020,1126],{},[168,10022,10023],{"class":170,"line":1058},[168,10024,228],{"emptyLinePlaceholder":227},[168,10026,10027],{"class":170,"line":1063},[168,10028,2856],{},[168,10030,10031],{"class":170,"line":1069},[168,10032,228],{"emptyLinePlaceholder":227},[168,10034,10035],{"class":170,"line":1074},[168,10036,2865],{},[168,10038,10039],{"class":170,"line":1080},[168,10040,228],{"emptyLinePlaceholder":227},[168,10042,10043],{"class":170,"line":1086},[168,10044,1126],{},[168,10046,10047],{"class":170,"line":1091},[168,10048,228],{"emptyLinePlaceholder":227},[168,10050,10051],{"class":170,"line":1274},[168,10052,2882],{},[168,10054,10055],{"class":170,"line":1280},[168,10056,228],{"emptyLinePlaceholder":227},[168,10058,10059],{"class":170,"line":1285},[168,10060,2891],{},[168,10062,10063],{"class":170,"line":1290},[168,10064,228],{"emptyLinePlaceholder":227},[168,10066,10067],{"class":170,"line":1295},[168,10068,1126],{},[168,10070,10071],{"class":170,"line":1300},[168,10072,228],{"emptyLinePlaceholder":227},[168,10074,10075],{"class":170,"line":1305},[168,10076,2908],{},[168,10078,10079],{"class":170,"line":1311},[168,10080,228],{"emptyLinePlaceholder":227},[168,10082,10083],{"class":170,"line":1316},[168,10084,2917],{},[168,10086,10087],{"class":170,"line":1322},[168,10088,228],{"emptyLinePlaceholder":227},[168,10090,10091],{"class":170,"line":1327},[168,10092,1126],{},[168,10094,10095],{"class":170,"line":1333},[168,10096,228],{"emptyLinePlaceholder":227},[168,10098,10099],{"class":170,"line":1338},[168,10100,2934],{},[168,10102,10103],{"class":170,"line":1344},[168,10104,228],{"emptyLinePlaceholder":227},[168,10106,10107],{"class":170,"line":1349},[168,10108,2943],{},[168,10110,10111],{"class":170,"line":1354},[168,10112,228],{"emptyLinePlaceholder":227},[168,10114,10115],{"class":170,"line":1359},[168,10116,1126],{},[168,10118,10119],{"class":170,"line":1365},[168,10120,228],{"emptyLinePlaceholder":227},[168,10122,10123],{"class":170,"line":1370},[168,10124,2960],{},[168,10126,10127],{"class":170,"line":1376},[168,10128,228],{"emptyLinePlaceholder":227},[168,10130,10131],{"class":170,"line":1381},[168,10132,2969],{},[168,10134,10135],{"class":170,"line":1386},[168,10136,228],{"emptyLinePlaceholder":227},[168,10138,10139],{"class":170,"line":1391},[168,10140,2978],{},[168,10142,10143],{"class":170,"line":1396},[168,10144,228],{"emptyLinePlaceholder":227},[168,10146,10147],{"class":170,"line":1401},[168,10148,1126],{},[168,10150,10151],{"class":170,"line":1407},[168,10152,228],{"emptyLinePlaceholder":227},[168,10154,10155],{"class":170,"line":1412},[168,10156,2995],{},[168,10158,10159],{"class":170,"line":1418},[168,10160,228],{"emptyLinePlaceholder":227},[168,10162,10163],{"class":170,"line":1423},[168,10164,3004],{},[168,10166,10167],{"class":170,"line":1428},[168,10168,228],{"emptyLinePlaceholder":227},[168,10170,10171],{"class":170,"line":1433},[168,10172,3013],{},[168,10174,10175],{"class":170,"line":1439},[168,10176,228],{"emptyLinePlaceholder":227},[168,10178,10179],{"class":170,"line":1444},[168,10180,3022],{},[168,10182,10183],{"class":170,"line":1450},[168,10184,228],{"emptyLinePlaceholder":227},[168,10186,10187],{"class":170,"line":1455},[168,10188,3031],{},[168,10190,10191],{"class":170,"line":1460},[168,10192,228],{"emptyLinePlaceholder":227},[168,10194,10195],{"class":170,"line":1465},[168,10196,3040],{},[168,10198,10199],{"class":170,"line":1470},[168,10200,228],{"emptyLinePlaceholder":227},[168,10202,10203],{"class":170,"line":1475},[168,10204,1126],{},[168,10206,10207],{"class":170,"line":1480},[168,10208,228],{"emptyLinePlaceholder":227},[168,10210,10211],{"class":170,"line":1485},[168,10212,3057],{},[168,10214,10215],{"class":170,"line":1491},[168,10216,228],{"emptyLinePlaceholder":227},[168,10218,10219],{"class":170,"line":1496},[168,10220,3066],{},[168,10222,10223],{"class":170,"line":1502},[168,10224,228],{"emptyLinePlaceholder":227},[168,10226,10227],{"class":170,"line":1507},[168,10228,1126],{},[168,10230,10231],{"class":170,"line":1513},[168,10232,228],{"emptyLinePlaceholder":227},[168,10234,10235],{"class":170,"line":1518},[168,10236,3083],{},[168,10238,10239],{"class":170,"line":1523},[168,10240,228],{"emptyLinePlaceholder":227},[168,10242,10243],{"class":170,"line":1528},[168,10244,3092],{},[168,10246,10247],{"class":170,"line":1533},[168,10248,228],{"emptyLinePlaceholder":227},[168,10250,10251],{"class":170,"line":1538},[168,10252,3101],{},[168,10254,10255],{"class":170,"line":1543},[168,10256,228],{"emptyLinePlaceholder":227},[168,10258,10259],{"class":170,"line":1548},[168,10260,3110],{},[168,10262,10263],{"class":170,"line":1554},[168,10264,228],{"emptyLinePlaceholder":227},[168,10266,10267],{"class":170,"line":1559},[168,10268,1094],{},[168,10270,10271],{"class":170,"line":1565},[168,10272,228],{"emptyLinePlaceholder":227},[168,10274,10275],{"class":170,"line":1570},[168,10276,3127],{},[168,10278,10279],{"class":170,"line":1575},[168,10280,228],{"emptyLinePlaceholder":227},[168,10282,10283],{"class":170,"line":1580},[168,10284,3101],{},[168,10286,10287],{"class":170,"line":1586},[168,10288,228],{"emptyLinePlaceholder":227},[168,10290,10291],{"class":170,"line":1591},[168,10292,3144],{},[168,10294,10295],{"class":170,"line":1597},[168,10296,228],{"emptyLinePlaceholder":227},[168,10298,10299],{"class":170,"line":1602},[168,10300,1094],{},[168,10302,10303],{"class":170,"line":1607},[168,10304,228],{"emptyLinePlaceholder":227},[168,10306,10307],{"class":170,"line":1612},[168,10308,3161],{},[168,10310,10311],{"class":170,"line":1618},[168,10312,228],{"emptyLinePlaceholder":227},[168,10314,10315],{"class":170,"line":1623},[168,10316,3101],{},[168,10318,10319],{"class":170,"line":1629},[168,10320,228],{"emptyLinePlaceholder":227},[168,10322,10323],{"class":170,"line":1634},[168,10324,3178],{},[168,10326,10327],{"class":170,"line":1640},[168,10328,228],{"emptyLinePlaceholder":227},[168,10330,10331],{"class":170,"line":1645},[168,10332,1094],{},[168,10334,10335],{"class":170,"line":1651},[168,10336,228],{"emptyLinePlaceholder":227},[168,10338,10339],{"class":170,"line":1656},[168,10340,3195],{},[168,10342,10343],{"class":170,"line":1662},[168,10344,228],{"emptyLinePlaceholder":227},[168,10346,10347],{"class":170,"line":1667},[168,10348,3101],{},[168,10350,10351],{"class":170,"line":1672},[168,10352,228],{"emptyLinePlaceholder":227},[168,10354,10355],{"class":170,"line":1677},[168,10356,3212],{},[168,10358,10359],{"class":170,"line":1683},[168,10360,228],{"emptyLinePlaceholder":227},[168,10362,10363],{"class":170,"line":1688},[168,10364,1094],{},[168,10366,10367],{"class":170,"line":1694},[168,10368,228],{"emptyLinePlaceholder":227},[168,10370,10371],{"class":170,"line":1699},[168,10372,1126],{},[168,10374,10375],{"class":170,"line":1705},[168,10376,228],{"emptyLinePlaceholder":227},[168,10378,10379],{"class":170,"line":1710},[168,10380,3237],{},[168,10382,10383],{"class":170,"line":1716},[168,10384,228],{"emptyLinePlaceholder":227},[168,10386,10387],{"class":170,"line":1721},[168,10388,1126],{},[168,10390,10391],{"class":170,"line":1727},[168,10392,228],{"emptyLinePlaceholder":227},[168,10394,10395],{"class":170,"line":1732},[168,10396,3254],{},[168,10398,10399],{"class":170,"line":1737},[168,10400,228],{"emptyLinePlaceholder":227},[168,10402,10403],{"class":170,"line":1742},[168,10404,3263],{},[168,10406,10407],{"class":170,"line":1748},[168,10408,228],{"emptyLinePlaceholder":227},[168,10410,10411],{"class":170,"line":1753},[168,10412,1126],{},[168,10414,10415],{"class":170,"line":1759},[168,10416,228],{"emptyLinePlaceholder":227},[168,10418,10419],{"class":170,"line":1764},[168,10420,3280],{},[168,10422,10423],{"class":170,"line":1769},[168,10424,228],{"emptyLinePlaceholder":227},[168,10426,10427],{"class":170,"line":1774},[168,10428,3289],{},[168,10430,10431],{"class":170,"line":1780},[168,10432,228],{"emptyLinePlaceholder":227},[168,10434,10435],{"class":170,"line":1785},[168,10436,3298],{},[168,10438,10439],{"class":170,"line":1790},[168,10440,228],{"emptyLinePlaceholder":227},[168,10442,10443],{"class":170,"line":1795},[168,10444,3307],{},[168,10446,10447],{"class":170,"line":1800},[168,10448,228],{"emptyLinePlaceholder":227},[168,10450,10451],{"class":170,"line":1805},[168,10452,3316],{},[168,10454,10455],{"class":170,"line":1810},[168,10456,228],{"emptyLinePlaceholder":227},[168,10458,10459],{"class":170,"line":1815},[168,10460,1126],{},[168,10462,10463],{"class":170,"line":1821},[168,10464,228],{"emptyLinePlaceholder":227},[168,10466,10467],{"class":170,"line":1826},[168,10468,3333],{},[168,10470,10471],{"class":170,"line":1832},[168,10472,228],{"emptyLinePlaceholder":227},[168,10474,10475],{"class":170,"line":1837},[168,10476,3342],{},[168,10478,10479],{"class":170,"line":1842},[168,10480,228],{"emptyLinePlaceholder":227},[168,10482,10483],{"class":170,"line":1847},[168,10484,1126],{},[168,10486,10487],{"class":170,"line":1853},[168,10488,228],{"emptyLinePlaceholder":227},[168,10490,10491],{"class":170,"line":1858},[168,10492,3359],{},[168,10494,10495],{"class":170,"line":1864},[168,10496,228],{"emptyLinePlaceholder":227},[168,10498,10499],{"class":170,"line":1869},[168,10500,3368],{},[168,10502,10503],{"class":170,"line":1875},[168,10504,228],{"emptyLinePlaceholder":227},[168,10506,10507],{"class":170,"line":1880},[168,10508,3377],{},[168,10510,10511],{"class":170,"line":1885},[168,10512,228],{"emptyLinePlaceholder":227},[168,10514,10515],{"class":170,"line":1890},[168,10516,1126],{},[168,10518,10519],{"class":170,"line":1895},[168,10520,228],{"emptyLinePlaceholder":227},[168,10522,10523],{"class":170,"line":1900},[168,10524,3394],{},[168,10526,10527],{"class":170,"line":1906},[168,10528,228],{"emptyLinePlaceholder":227},[168,10530,10531],{"class":170,"line":1911},[168,10532,3403],{},[168,10534,10535],{"class":170,"line":1917},[168,10536,228],{"emptyLinePlaceholder":227},[168,10538,10539],{"class":170,"line":1922},[168,10540,3412],{},[168,10542,10543],{"class":170,"line":1927},[168,10544,228],{"emptyLinePlaceholder":227},[168,10546,10547],{"class":170,"line":1932},[168,10548,3421],{},[168,10550,10551],{"class":170,"line":1938},[168,10552,228],{"emptyLinePlaceholder":227},[168,10554,10555],{"class":170,"line":1943},[168,10556,3430],{},[860,10558,3434],{"id":3433},[3436,10560,10561,10569],{},[801,10562,3440,10563,3444,10565,3448,10567],{},[83,10564,3443],{},[83,10566,3447],{},[154,10568],{"alt":3451,"src":3452},[801,10570,3455,10571],{},[83,10572,3458],{},[159,10574,10575],{"className":3461,"code":3462,"language":709,"meta":164,"style":164},[83,10576,10577,10581,10585,10589,10593,10597,10601,10605,10609,10613,10617,10621,10625,10629,10633,10637,10641,10645,10649,10653,10657,10661,10665,10669,10673,10677,10681,10685,10689,10693,10697,10701,10705,10709,10713,10717,10721,10725,10729,10733,10737,10741,10745,10749,10753,10757,10761,10765,10769,10773,10777,10781,10785,10789],{"__ignoreMap":164},[168,10578,10579],{"class":170,"line":171},[168,10580,3469],{},[168,10582,10583],{"class":170,"line":178},[168,10584,3474],{},[168,10586,10587],{"class":170,"line":192},[168,10588,228],{"emptyLinePlaceholder":227},[168,10590,10591],{"class":170,"line":224},[168,10592,3483],{},[168,10594,10595],{"class":170,"line":231},[168,10596,3488],{},[168,10598,10599],{"class":170,"line":237},[168,10600,3493],{},[168,10602,10603],{"class":170,"line":270},[168,10604,3498],{},[168,10606,10607],{"class":170,"line":275},[168,10608,3503],{},[168,10610,10611],{"class":170,"line":281},[168,10612,3508],{},[168,10614,10615],{"class":170,"line":290},[168,10616,228],{"emptyLinePlaceholder":227},[168,10618,10619],{"class":170,"line":299},[168,10620,3517],{},[168,10622,10623],{"class":170,"line":311},[168,10624,3522],{},[168,10626,10627],{"class":170,"line":316},[168,10628,3527],{},[168,10630,10631],{"class":170,"line":322},[168,10632,228],{"emptyLinePlaceholder":227},[168,10634,10635],{"class":170,"line":345},[168,10636,3536],{},[168,10638,10639],{"class":170,"line":369},[168,10640,3541],{},[168,10642,10643],{"class":170,"line":395},[168,10644,3527],{},[168,10646,10647],{"class":170,"line":400},[168,10648,228],{"emptyLinePlaceholder":227},[168,10650,10651],{"class":170,"line":406},[168,10652,3554],{},[168,10654,10655],{"class":170,"line":414},[168,10656,3559],{},[168,10658,10659],{"class":170,"line":996},[168,10660,3527],{},[168,10662,10663],{"class":170,"line":1001},[168,10664,228],{"emptyLinePlaceholder":227},[168,10666,10667],{"class":170,"line":1007},[168,10668,3572],{},[168,10670,10671],{"class":170,"line":1013},[168,10672,3577],{},[168,10674,10675],{"class":170,"line":1018},[168,10676,3582],{},[168,10678,10679],{"class":170,"line":1024},[168,10680,3527],{},[168,10682,10683],{"class":170,"line":1030},[168,10684,3591],{},[168,10686,10687],{"class":170,"line":1035},[168,10688,3596],{},[168,10690,10691],{"class":170,"line":1041},[168,10692,3601],{},[168,10694,10695],{"class":170,"line":1046},[168,10696,3606],{},[168,10698,10699],{"class":170,"line":1052},[168,10700,3611],{},[168,10702,10703],{"class":170,"line":1058},[168,10704,3527],{},[168,10706,10707],{"class":170,"line":1063},[168,10708,228],{"emptyLinePlaceholder":227},[168,10710,10711],{"class":170,"line":1069},[168,10712,3624],{},[168,10714,10715],{"class":170,"line":1074},[168,10716,3629],{},[168,10718,10719],{"class":170,"line":1080},[168,10720,3634],{},[168,10722,10723],{"class":170,"line":1086},[168,10724,3639],{},[168,10726,10727],{"class":170,"line":1091},[168,10728,3527],{},[168,10730,10731],{"class":170,"line":1274},[168,10732,228],{"emptyLinePlaceholder":227},[168,10734,10735],{"class":170,"line":1280},[168,10736,3652],{},[168,10738,10739],{"class":170,"line":1285},[168,10740,228],{"emptyLinePlaceholder":227},[168,10742,10743],{"class":170,"line":1290},[168,10744,3661],{},[168,10746,10747],{"class":170,"line":1295},[168,10748,3666],{},[168,10750,10751],{"class":170,"line":1300},[168,10752,3671],{},[168,10754,10755],{"class":170,"line":1305},[168,10756,228],{"emptyLinePlaceholder":227},[168,10758,10759],{"class":170,"line":1311},[168,10760,3527],{},[168,10762,10763],{"class":170,"line":1316},[168,10764,228],{"emptyLinePlaceholder":227},[168,10766,10767],{"class":170,"line":1322},[168,10768,3688],{},[168,10770,10771],{"class":170,"line":1327},[168,10772,228],{"emptyLinePlaceholder":227},[168,10774,10775],{"class":170,"line":1333},[168,10776,3697],{},[168,10778,10779],{"class":170,"line":1338},[168,10780,3702],{},[168,10782,10783],{"class":170,"line":1344},[168,10784,3707],{},[168,10786,10787],{"class":170,"line":1349},[168,10788,3712],{},[168,10790,10791],{"class":170,"line":1354},[168,10792,3527],{},[3436,10794,10795],{"start":192},[801,10796,3721],{},[159,10798,10799],{"className":869,"code":3724,"language":871,"meta":164,"style":164},[83,10800,10801,10805,10809,10813,10817,10821,10825,10829,10833,10837,10841,10845,10849,10853,10857,10861,10865,10869,10873],{"__ignoreMap":164},[168,10802,10803],{"class":170,"line":171},[168,10804,228],{"emptyLinePlaceholder":227},[168,10806,10807],{"class":170,"line":178},[168,10808,3735],{},[168,10810,10811],{"class":170,"line":192},[168,10812,3740],{},[168,10814,10815],{"class":170,"line":224},[168,10816,3745],{},[168,10818,10819],{"class":170,"line":231},[168,10820,3750],{},[168,10822,10823],{"class":170,"line":237},[168,10824,3755],{},[168,10826,10827],{"class":170,"line":270},[168,10828,3740],{},[168,10830,10831],{"class":170,"line":275},[168,10832,1094],{},[168,10834,10835],{"class":170,"line":281},[168,10836,228],{"emptyLinePlaceholder":227},[168,10838,10839],{"class":170,"line":290},[168,10840,3772],{},[168,10842,10843],{"class":170,"line":299},[168,10844,3740],{},[168,10846,10847],{"class":170,"line":311},[168,10848,228],{"emptyLinePlaceholder":227},[168,10850,10851],{"class":170,"line":316},[168,10852,3785],{},[168,10854,10855],{"class":170,"line":322},[168,10856,228],{"emptyLinePlaceholder":227},[168,10858,10859],{"class":170,"line":345},[168,10860,3794],{},[168,10862,10863],{"class":170,"line":369},[168,10864,3799],{},[168,10866,10867],{"class":170,"line":395},[168,10868,228],{"emptyLinePlaceholder":227},[168,10870,10871],{"class":170,"line":400},[168,10872,3740],{},[168,10874,10875],{"class":170,"line":406},[168,10876,1094],{},[3436,10878,10879],{"start":224},[801,10880,3816,10881,3820],{},[83,10882,3819],{},[159,10884,10885],{"className":161,"code":3823,"language":163,"meta":164,"style":164},[83,10886,10887,10891,10897,10903,10907,10911,10915,10921,10925,10931,10935,10941,10945,10949,10953,10959,10963,10967,10973,10977,10983,10987,10993,10997,11003,11007],{"__ignoreMap":164},[168,10888,10889],{"class":170,"line":171},[168,10890,3830],{"class":174},[168,10892,10893,10895],{"class":170,"line":178},[168,10894,284],{"class":202},[168,10896,3837],{"class":185},[168,10898,10899,10901],{"class":170,"line":192},[168,10900,3842],{"class":202},[168,10902,3845],{"class":185},[168,10904,10905],{"class":170,"line":224},[168,10906,228],{"emptyLinePlaceholder":227},[168,10908,10909],{"class":170,"line":231},[168,10910,3854],{"class":181},[168,10912,10913],{"class":170,"line":237},[168,10914,228],{"emptyLinePlaceholder":227},[168,10916,10917,10919],{"class":170,"line":270},[168,10918,3863],{"class":181},[168,10920,3866],{"class":185},[168,10922,10923],{"class":170,"line":275},[168,10924,228],{"emptyLinePlaceholder":227},[168,10926,10927,10929],{"class":170,"line":281},[168,10928,3842],{"class":202},[168,10930,3877],{"class":185},[168,10932,10933],{"class":170,"line":290},[168,10934,228],{"emptyLinePlaceholder":227},[168,10936,10937,10939],{"class":170,"line":299},[168,10938,3886],{"class":202},[168,10940,3889],{"class":202},[168,10942,10943],{"class":170,"line":311},[168,10944,228],{"emptyLinePlaceholder":227},[168,10946,10947],{"class":170,"line":316},[168,10948,3898],{"class":325},[168,10950,10951],{"class":170,"line":322},[168,10952,228],{"emptyLinePlaceholder":227},[168,10954,10955,10957],{"class":170,"line":345},[168,10956,3842],{"class":202},[168,10958,3909],{"class":185},[168,10960,10961],{"class":170,"line":369},[168,10962,3914],{"class":174},[168,10964,10965],{"class":170,"line":395},[168,10966,228],{"emptyLinePlaceholder":227},[168,10968,10969,10971],{"class":170,"line":400},[168,10970,3923],{"class":181},[168,10972,3926],{"class":202},[168,10974,10975],{"class":170,"line":406},[168,10976,228],{"emptyLinePlaceholder":227},[168,10978,10979,10981],{"class":170,"line":414},[168,10980,3935],{"class":329},[168,10982,3938],{"class":202},[168,10984,10985],{"class":170,"line":996},[168,10986,228],{"emptyLinePlaceholder":227},[168,10988,10989,10991],{"class":170,"line":1001},[168,10990,3947],{"class":329},[168,10992,3938],{"class":202},[168,10994,10995],{"class":170,"line":1007},[168,10996,228],{"emptyLinePlaceholder":227},[168,10998,10999,11001],{"class":170,"line":1013},[168,11000,3958],{"class":329},[168,11002,3938],{"class":202},[168,11004,11005],{"class":170,"line":1018},[168,11006,228],{"emptyLinePlaceholder":227},[168,11008,11009,11011],{"class":170,"line":1024},[168,11010,3969],{"class":329},[168,11012,3972],{"class":185},[140,11014,3975],{"id":3975},[860,11016,3979],{"id":3978},[10,11018,3982],{},[798,11020,11021,11023],{},[801,11022,3987],{},[801,11024,3990],{},[159,11026,11027],{"className":161,"code":3993,"language":163,"meta":164,"style":164},[83,11028,11029,11033,11039,11043,11049,11053,11059,11063,11069,11073],{"__ignoreMap":164},[168,11030,11031],{"class":170,"line":171},[168,11032,3830],{"class":174},[168,11034,11035,11037],{"class":170,"line":178},[168,11036,3923],{"class":181},[168,11038,3926],{"class":202},[168,11040,11041],{"class":170,"line":192},[168,11042,228],{"emptyLinePlaceholder":227},[168,11044,11045,11047],{"class":170,"line":224},[168,11046,3935],{"class":329},[168,11048,3938],{"class":202},[168,11050,11051],{"class":170,"line":231},[168,11052,228],{"emptyLinePlaceholder":227},[168,11054,11055,11057],{"class":170,"line":237},[168,11056,3947],{"class":329},[168,11058,3938],{"class":202},[168,11060,11061],{"class":170,"line":270},[168,11062,228],{"emptyLinePlaceholder":227},[168,11064,11065,11067],{"class":170,"line":275},[168,11066,4034],{"class":329},[168,11068,3938],{"class":202},[168,11070,11071],{"class":170,"line":281},[168,11072,228],{"emptyLinePlaceholder":227},[168,11074,11075],{"class":170,"line":290},[168,11076,4045],{"class":329},[4047,11078,4049],{},{"title":164,"searchDepth":224,"depth":224,"links":11080},[11081,11086,11089],{"id":39,"depth":178,"text":40,"children":11082},[11083,11084,11085],{"id":142,"depth":192,"text":143},{"id":481,"depth":192,"text":4056},{"id":594,"depth":192,"text":595},{"id":791,"depth":178,"text":792,"children":11087},[11088],{"id":795,"depth":192,"text":796},{"id":853,"depth":178,"text":854,"children":11090},[11091,11096],{"id":857,"depth":192,"text":858,"children":11092},[11093,11094,11095],{"id":862,"depth":224,"text":863},{"id":895,"depth":224,"text":896},{"id":3433,"depth":224,"text":3434},{"id":3975,"depth":192,"text":3975,"children":11097},[11098],{"id":3978,"depth":224,"text":3979},{},{"title":5,"description":4073},[4071],1792730445849]