€•ÝRŒsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ:/translations/zh_CN/filesystems/bcachefs/SubmittingPatches”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ:/translations/zh_TW/filesystems/bcachefs/SubmittingPatches”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ:/translations/it_IT/filesystems/bcachefs/SubmittingPatches”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ:/translations/ja_JP/filesystems/bcachefs/SubmittingPatches”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ:/translations/ko_KR/filesystems/bcachefs/SubmittingPatches”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ:/translations/sp_SP/filesystems/bcachefs/SubmittingPatches”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒSubmitting patches to bcachefs”h]”hŒSubmitting patches to bcachefs”…””}”(hh¨hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hh£hžhhŸŒT/var/lib/git/docbuild/linux/Documentation/filesystems/bcachefs/SubmittingPatches.rst”h KubhŒ paragraph”“”)”}”(hŒBHere are suggestions for submitting patches to bcachefs subsystem.”h]”hŒBHere are suggestions for submitting patches to bcachefs subsystem.”…””}”(hh¹hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Khh£hžhubh¢)”}”(hhh]”(h§)”}”(hŒSubmission checklist”h]”hŒSubmission checklist”…””}”(hhÊhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hhÇhžhhŸh¶h Kubh¸)”}”(hXWPatches must be tested before being submitted, either with the xfstests suite [0]_, or the full bcachefs test suite in ktest [1]_, depending on what's being touched. Note that ktest wraps xfstests and will be an easier method to running it for most users; it includes single-command wrappers for all the mainstream in-kernel local filesystems.”h]”(hŒNPatches must be tested before being submitted, either with the xfstests suite ”…””}”(hhØhžhhŸNh NubhŒfootnote_reference”“”)”}”(hŒ[0]_”h]”hŒ0”…””}”(hhâhžhhŸNh Nubah}”(h]”Œid1”ah ]”h"]”h$]”h&]”Œrefid”Œid6”Œdocname”Œ&filesystems/bcachefs/SubmittingPatches”uh1hàhhØŒresolved”KubhŒ+, or the full bcachefs test suite in ktest ”…””}”(hhØhžhhŸNh Nubhá)”}”(hŒ[1]_”h]”hŒ1”…””}”(hhúhžhhŸNh Nubah}”(h]”Œid2”ah ]”h"]”h$]”h&]”hñŒid7”hóhôuh1hàhhØhõKubhŒØ, depending on what’s being touched. Note that ktest wraps xfstests and will be an easier method to running it for most users; it includes single-command wrappers for all the mainstream in-kernel local filesystems.”…””}”(hhØhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K hhÇhžhubh¸)”}”(hX¼Patches will undergo more testing after being merged (including lockdep/kasan/preempt/etc. variants), these are not generally required to be run by the submitter - but do put some thought into what you're changing and which tests might be relevant, e.g. are you dealing with tricky memory layout work? kasan, are you doing locking work? then lockdep; and ktest includes single-command variants for the debug build types you'll most likely need.”h]”hXÀPatches will undergo more testing after being merged (including lockdep/kasan/preempt/etc. variants), these are not generally required to be run by the submitter - but do put some thought into what you’re changing and which tests might be relevant, e.g. are you dealing with tricky memory layout work? kasan, are you doing locking work? then lockdep; and ktest includes single-command variants for the debug build types you’ll most likely need.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KhhÇhžhubh¸)”}”(hX?The exception to this rule is incomplete WIP/RFC patches: if you're working on something nontrivial, it's encouraged to send out a WIP patch to let people know what you're doing and make sure you're on the right track. Just make sure it includes a brief note as to what's done and what's incomplete, to avoid confusion.”h]”hXKThe exception to this rule is incomplete WIP/RFC patches: if you’re working on something nontrivial, it’s encouraged to send out a WIP patch to let people know what you’re doing and make sure you’re on the right track. Just make sure it includes a brief note as to what’s done and what’s incomplete, to avoid confusion.”…””}”(hj"hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KhhÇhžhubh¸)”}”(hŒ“Rigorous checkpatch.pl adherence is not required (many of its warnings are considered out of date), but try not to deviate too much without reason.”h]”hŒ“Rigorous checkpatch.pl adherence is not required (many of its warnings are considered out of date), but try not to deviate too much without reason.”…””}”(hj0hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KhhÇhžhubh¸)”}”(hŒcFocus on writing code that reads well and is organized well; code should be aesthetically pleasing.”h]”hŒcFocus on writing code that reads well and is organized well; code should be aesthetically pleasing.”…””}”(hj>hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KhhÇhžhubeh}”(h]”Œsubmission-checklist”ah ]”h"]”Œsubmission checklist”ah$]”h&]”uh1h¡hh£hžhhŸh¶h Kubh¢)”}”(hhh]”(h§)”}”(hŒCI”h]”hŒCI”…””}”(hjWhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjThžhhŸh¶h K#ubh¸)”}”(hX-Instead of running your tests locally, when running the full test suite it's preferable to let a server farm do it in parallel, and then have the results in a nice test dashboard (which can tell you which failures are new, and presents results in a git log view, avoiding the need for most bisecting).”h]”hX/Instead of running your tests locally, when running the full test suite it’s preferable to let a server farm do it in parallel, and then have the results in a nice test dashboard (which can tell you which failures are new, and presents results in a git log view, avoiding the need for most bisecting).”…””}”(hjehžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K%hjThžhubh¸)”}”(hX6That exists [2]_, and community members may request an account. If you work for a big tech company, you'll need to help out with server costs to get access - but the CI is not restricted to running bcachefs tests: it runs any ktest test (which generally makes it easy to wrap other tests that can run in qemu).”h]”(hŒ That exists ”…””}”(hjshžhhŸNh Nubhá)”}”(hŒ[2]_”h]”hŒ2”…””}”(hj{hžhhŸNh Nubah}”(h]”Œid3”ah ]”h"]”h$]”h&]”hñŒid8”hóhôuh1hàhjshõKubhX(, and community members may request an account. If you work for a big tech company, you’ll need to help out with server costs to get access - but the CI is not restricted to running bcachefs tests: it runs any ktest test (which generally makes it easy to wrap other tests that can run in qemu).”…””}”(hjshžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K*hjThžhubeh}”(h]”Œci”ah ]”h"]”Œci”ah$]”h&]”uh1h¡hh£hžhhŸh¶h K#ubh¢)”}”(hhh]”(h§)”}”(hŒOther things to think about”h]”hŒOther things to think about”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjhžhhŸh¶h K0ubhŒ bullet_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hXHow will we debug this code? Is there sufficient introspection to diagnose when something starts acting wonky on a user machine? We don't necessarily need every single field of every data structure visible with introspection, but having the important fields of all the core data types wired up makes debugging drastically easier - a bit of thoughtful foresight greatly reduces the need to have people build custom kernels with debug patches. More broadly, think about all the debug tooling that might be needed. ”h]”(h¸)”}”(hŒ€How will we debug this code? Is there sufficient introspection to diagnose when something starts acting wonky on a user machine?”h]”hŒ€How will we debug this code? Is there sufficient introspection to diagnose when something starts acting wonky on a user machine?”…””}”(hj¹hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K2hjµubh¸)”}”(hX8We don't necessarily need every single field of every data structure visible with introspection, but having the important fields of all the core data types wired up makes debugging drastically easier - a bit of thoughtful foresight greatly reduces the need to have people build custom kernels with debug patches.”h]”hX:We don’t necessarily need every single field of every data structure visible with introspection, but having the important fields of all the core data types wired up makes debugging drastically easier - a bit of thoughtful foresight greatly reduces the need to have people build custom kernels with debug patches.”…””}”(hjÇhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K5hjµubh¸)”}”(hŒEMore broadly, think about all the debug tooling that might be needed.”h]”hŒEMore broadly, think about all the debug tooling that might be needed.”…””}”(hjÕhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K;hjµubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³hj°hžhhŸh¶h Nubj´)”}”(hŒ^Does it make the codebase more or less of a mess? Can we also try to do some organizing, too? ”h]”h¸)”}”(hŒ]Does it make the codebase more or less of a mess? Can we also try to do some organizing, too?”h]”hŒ]Does it make the codebase more or less of a mess? Can we also try to do some organizing, too?”…””}”(hjíhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K=hjéubah}”(h]”h ]”h"]”h$]”h&]”uh1j³hj°hžhhŸh¶h Nubj´)”}”(hXfDo new tests need to be written? New assertions? How do we know and verify that the code is correct, and what happens if something goes wrong? We don't yet have automated code coverage analysis or easy fault injection - but for now, pretend we did and ask what they might tell us. Assertions are hugely important, given that we don't yet have a systems language that can do ergonomic embedded correctness proofs. Hitting an assert in testing is much better than wandering off into undefined behaviour la-la land - use them. Use them judiciously, and not as a replacement for proper error handling, but use them. ”h]”(h¸)”}”(hŒŽDo new tests need to be written? New assertions? How do we know and verify that the code is correct, and what happens if something goes wrong?”h]”hŒŽDo new tests need to be written? New assertions? How do we know and verify that the code is correct, and what happens if something goes wrong?”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K@hjubh¸)”}”(hŒ‰We don't yet have automated code coverage analysis or easy fault injection - but for now, pretend we did and ask what they might tell us.”h]”hŒ‹We don’t yet have automated code coverage analysis or easy fault injection - but for now, pretend we did and ask what they might tell us.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KChjubh¸)”}”(hXJAssertions are hugely important, given that we don't yet have a systems language that can do ergonomic embedded correctness proofs. Hitting an assert in testing is much better than wandering off into undefined behaviour la-la land - use them. Use them judiciously, and not as a replacement for proper error handling, but use them.”h]”hXLAssertions are hugely important, given that we don’t yet have a systems language that can do ergonomic embedded correctness proofs. Hitting an assert in testing is much better than wandering off into undefined behaviour la-la land - use them. Use them judiciously, and not as a replacement for proper error handling, but use them.”…””}”(hj!hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KFhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³hj°hžhhŸh¶h Nubj´)”}”(hXdDoes it need to be performance tested? Should we add new performance counters? bcachefs has a set of persistent runtime counters which can be viewed with the 'bcachefs fs top' command; this should give users a basic idea of what their filesystem is currently doing. If you're doing a new feature or looking at old code, think if anything should be added. ”h]”(h¸)”}”(hŒNDoes it need to be performance tested? Should we add new performance counters?”h]”hŒNDoes it need to be performance tested? Should we add new performance counters?”…””}”(hj9hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KLhj5ubh¸)”}”(hXbcachefs has a set of persistent runtime counters which can be viewed with the 'bcachefs fs top' command; this should give users a basic idea of what their filesystem is currently doing. If you're doing a new feature or looking at old code, think if anything should be added.”h]”hXbcachefs has a set of persistent runtime counters which can be viewed with the ‘bcachefs fs top’ command; this should give users a basic idea of what their filesystem is currently doing. If you’re doing a new feature or looking at old code, think if anything should be added.”…””}”(hjGhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KNhj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³hj°hžhhŸh¶h Nubj´)”}”(hŒÉIf it's a new on disk format feature - have upgrades and downgrades been tested? (Automated tests exists but aren't in the CI, due to the hassle of disk image management; coordinate to have them run.) ”h]”h¸)”}”(hŒÈIf it's a new on disk format feature - have upgrades and downgrades been tested? (Automated tests exists but aren't in the CI, due to the hassle of disk image management; coordinate to have them run.)”h]”hŒÌIf it’s a new on disk format feature - have upgrades and downgrades been tested? (Automated tests exists but aren’t in the CI, due to the hassle of disk image management; coordinate to have them run.)”…””}”(hj_hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KShj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j³hj°hžhhŸh¶h Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1j®hŸh¶h K2hjhžhubeh}”(h]”Œother-things-to-think-about”ah ]”h"]”Œother things to think about”ah$]”h&]”uh1h¡hh£hžhhŸh¶h K0ubh¢)”}”(hhh]”(h§)”}”(hŒMailing list, IRC”h]”hŒMailing list, IRC”…””}”(hj†hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjƒhžhhŸh¶h KXubh¸)”}”(hŒ°Patches should hit the list [3]_, but much discussion and code review happens on IRC as well [4]_; many people appreciate the more conversational approach and quicker feedback.”h]”(hŒPatches should hit the list ”…””}”(hj”hžhhŸNh Nubhá)”}”(hŒ[3]_”h]”hŒ3”…””}”(hjœhžhhŸNh Nubah}”(h]”Œid4”ah ]”h"]”h$]”h&]”hñŒid9”hóhôuh1hàhj”hõKubhŒ=, but much discussion and code review happens on IRC as well ”…””}”(hj”hžhhŸNh Nubhá)”}”(hŒ[4]_”h]”hŒ4”…””}”(hj°hžhhŸNh Nubah}”(h]”Œid5”ah ]”h"]”h$]”h&]”hñŒid10”hóhôuh1hàhj”hõKubhŒO; many people appreciate the more conversational approach and quicker feedback.”…””}”(hj”hžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KZhjƒhžhubh¸)”}”(hŒúAdditionally, we have a lively user community doing excellent QA work, which exists primarily on IRC. Please make use of that resource; user feedback is important for any nontrivial feature, and documenting it in commit messages would be a good idea.”h]”hŒúAdditionally, we have a lively user community doing excellent QA work, which exists primarily on IRC. Please make use of that resource; user feedback is important for any nontrivial feature, and documenting it in commit messages would be a good idea.”…””}”(hjÊhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K^hjƒhžhubhŒrubric”“”)”}”(hŒ References”h]”hŒ References”…””}”(hjÚhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jØhjƒhžhhŸh¶h KdubhŒfootnote”“”)”}”(hŒ4git://git.kernel.org/pub/scm/fs/xfs/xfstests-dev.git”h]”(hŒlabel”“”)”}”(hŒ0”h]”hŒ0”…””}”(hjðhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jîhjêubh¸)”}”(hjìh]”hŒ4git://git.kernel.org/pub/scm/fs/xfs/xfstests-dev.git”…””}”(hjþhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Kehjêubeh}”(h]”hòah ]”h"]”Œ0”ah$]”h&]”hìahóhôuh1jèhŸh¶h KehjƒhžhhõKubjé)”}”(hŒ(https://evilpiepirate.org/git/ktest.git/”h]”(jï)”}”(hŒ1”h]”hŒ1”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jîhjubh¸)”}”(hjh]”hŒ reference”“”)”}”(hjh]”hŒ(https://evilpiepirate.org/git/ktest.git/”…””}”(hj)hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”juh1j'hj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Kfhjubeh}”(h]”j ah ]”h"]”Œ1”ah$]”h&]”jahóhôuh1jèhŸh¶h KfhjƒhžhhõKubjé)”}”(hŒ,https://evilpiepirate.org/~testdashboard/ci/”h]”(jï)”}”(hŒ2”h]”hŒ2”…””}”(hjHhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jîhjDubh¸)”}”(hjFh]”j()”}”(hjFh]”hŒ,https://evilpiepirate.org/~testdashboard/ci/”…””}”(hjYhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jFuh1j'hjVubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KghjDubeh}”(h]”jŠah ]”h"]”Œ2”ah$]”h&]”j…ahóhôuh1jèhŸh¶h KghjƒhžhhõKubjé)”}”(hŒlinux-bcachefs@vger.kernel.org”h]”(jï)”}”(hŒ3”h]”hŒ3”…””}”(hjxhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jîhjtubh¸)”}”(hjvh]”j()”}”(hjvh]”hŒlinux-bcachefs@vger.kernel.org”…””}”(hj‰hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œ%mailto:linux-bcachefs@vger.kernel.org”uh1j'hj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Khhjtubeh}”(h]”j«ah ]”h"]”Œ3”ah$]”h&]”j¦ahóhôuh1jèhŸh¶h KhhjƒhžhhõKubjé)”}”(hŒ"irc.oftc.net#bcache, #bcachefs-dev”h]”(jï)”}”(hŒ4”h]”hŒ4”…””}”(hj©hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jîhj¥ubh¸)”}”(hj§h]”hŒ"irc.oftc.net#bcache, #bcachefs-dev”…””}”(hj·hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Kihj¥ubeh}”(h]”j¿ah ]”h"]”Œ4”ah$]”h&]”jºahóhôuh1jèhŸh¶h KihjƒhžhhõKubeh}”(h]”Œmailing-list-irc”ah ]”h"]”Œmailing list, irc”ah$]”h&]”uh1h¡hh£hžhhŸh¶h KXubeh}”(h]”Œsubmitting-patches-to-bcachefs”ah ]”h"]”Œsubmitting patches to bcachefs”ah$]”h&]”uh1h¡hhhžhhŸh¶h Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”h¶uh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(h¦NŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jþŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”h¶Œ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”(Œ0”]”hâaŒ1”]”húaŒ2”]”j{aŒ3”]”jœaŒ4”]”j°auŒrefids”}”Œnameids”}”(jØjÕjQjNjšj—j€j}jÐjÍjhòjAj jqjŠj¢j«jÈj¿uŒ nametypes”}”(j؉jQ‰jš‰j€‰jЉjˆjAˆjqˆj¢ˆjȈuh}”(jÕh£jNhÇhìhâjhúj—jTj…j{j}jjÍjƒj¦jœjºj°hòjêj jjŠjDj«jtj¿j¥uŒ footnote_refs”}”(j>]”hâaj@]”húajB]”j{ajD]”jœajF]”j°auŒ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”(jêjjDjtj¥eŒ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”j K s…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nhžhub.